megaharon 0 13 ноября, 2011 Опубликовано 13 ноября, 2011 · Жалоба Добрый день. Пишу проект на 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 0 13 ноября, 2011 Опубликовано 13 ноября, 2011 · Жалоба Кроме настроек индексера надо, чтобы все папки с Вашими исходниками числились в Project->Properties->C/C++ General->Paths and Symbols->Source Location, а прилинкованные папки (я думаю, что это папки с scmRTOS) - в Project->Properties->Linked Resources->Linked Resources. Причём, как я недавно выяснил, прилинковывать следует не всю папку scmRTOS целиком со всеми портами, нужными и не нужными, а только задействованные в проекте (или ставить фильтры, что геморойно). Это потому, что местный индексер понятия не имеет и не парсит Ваш мейкфайл на предмет задействованных Вами путей. В конце всех манипуляций не вредно сделать в контекстном меню на имени проекта в Project Explorer Index->Rebuild. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megaharon 0 13 ноября, 2011 Опубликовано 13 ноября, 2011 (изменено) · Жалоба Это потому, что местный индексер понятия не имеет и не парсит Ваш мейкфайл на предмет задействованных Вами путей. Большое спасибо за подсказку. Начал разбираться с путями и выяснил, что индексатор не может найти некоторые файлы .h. Т. е. имеются unresolved Includes. Раньше я на это не обращал внимания, т. к. все и так компилировалось. После того, как я указал в свойствах проекта Project->Properties->C/C++ General->Paths and Symbols->Includes пути к файлам stdint.h и stddef.h все заработало. Изменено 13 ноября, 2011 пользователем Alekseeey Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 13 ноября, 2011 Опубликовано 13 ноября, 2011 · Жалоба После того, как я указал в свойствах проекта 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 18 13 ноября, 2011 Опубликовано 13 ноября, 2011 · Жалоба Пожалуйста, помогите, обьясните. Очень похоже на мою давнюю проблему. Вот здесь обсуждалась. (Решение там же, несколькими сообщениями позже) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться