Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Eclipse, индексация
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Alekseeey
Добрый день.

Пишу проект на c++ для arm, в проекте применяю scmRTOS. В качестве среды использую Eclipse Helios IDE for c++, система winXP.

Вопрос: как правильно настроить индексацию файлов проекта, чтобы среда Eclipse позволяла перемещаться по нажатию F3 между вызовом функции и ее реализацией, между константой и ее обьявлением?

Например, не работает следующая цепочка:

Файл main.cpp:
Код
...
#include "debuguart.h"
...
Tdebuguart    debuguart;
...
int main(void)
{
...
    // debuguart;
    debuguart.hw_init(); // Тут все прекрасно работает: можно перейти на код методов debuguart по нажатию F3
    debuguart.print_s("\n\r Start \n\r");
...
}

...

namespace OS
{
...
    template <>
    OS_PROCESS void TProc4::exec()
    {
        for (;;)
        {
            debuguart.print_s("\n\r\n\r Menu:      \n\r");
// А в этом месте ^^^  по нажатию F3 eclipse пишет красным, что
// 'Could not find symbol 'print_s' in index.'
...



Пробовал уже все что угодно в настройках window / preferences... / C/C++ / Indexer, но ничего не работает.

Пожалуйста, помогите, обьясните.

IgorKossak
Кроме настроек индексера надо, чтобы все папки с Вашими исходниками числились в Project->Properties->C/C++ General->Paths and Symbols->Source Location, а прилинкованные папки (я думаю, что это папки с scmRTOS) - в Project->Properties->Linked Resources->Linked Resources.
Причём, как я недавно выяснил, прилинковывать следует не всю папку scmRTOS целиком со всеми портами, нужными и не нужными, а только задействованные в проекте (или ставить фильтры, что геморойно). Это потому, что местный индексер понятия не имеет и не парсит Ваш мейкфайл на предмет задействованных Вами путей.
В конце всех манипуляций не вредно сделать в контекстном меню на имени проекта в Project Explorer Index->Rebuild.
Alekseeey
Цитата(IgorKossak @ Nov 13 2011, 13:14) *
Это потому, что местный индексер понятия не имеет и не парсит Ваш мейкфайл на предмет задействованных Вами путей.


Большое спасибо за подсказку.

Начал разбираться с путями и выяснил, что индексатор не может найти некоторые файлы .h. Т. е. имеются unresolved Includes.

Раньше я на это не обращал внимания, т. к. все и так компилировалось.

После того, как я указал в свойствах проекта Project->Properties->C/C++ General->Paths and Symbols->Includes пути к файлам stdint.h и stddef.h все заработало.
IgorKossak
Цитата(Alekseeey @ Nov 13 2011, 13:07) *
После того, как я указал в свойствах проекта Project->Properties->C/C++ General->Paths and Symbols->Includes пути к файлам stdint.h и stddef.h все заработало.

Это совершенно лишнее - указывать системные пути вручную.
Надо лишь правильно настроить Project->Properties->C/C++ Build->Discovery Options, особенно поле Compiler invocation command, запустить билд, и нужные пути появятся в Paths and Symbols->Includes
AHTOXA
Цитата(Alekseeey @ Nov 13 2011, 13:27) *
Пожалуйста, помогите, обьясните.

Очень похоже на мою давнюю проблему. Вот здесь обсуждалась. (Решение там же, несколькими сообщениями позже)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.