Перейти к содержанию
    

Eclipse, индексация

Добрый день.

 

Пишу проект на 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, но ничего не работает.

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кроме настроек индексера надо, чтобы все папки с Вашими исходниками числились в Project->Properties->C/C++ General->Paths and Symbols->Source Location, а прилинкованные папки (я думаю, что это папки с scmRTOS) - в Project->Properties->Linked Resources->Linked Resources.

Причём, как я недавно выяснил, прилинковывать следует не всю папку scmRTOS целиком со всеми портами, нужными и не нужными, а только задействованные в проекте (или ставить фильтры, что геморойно). Это потому, что местный индексер понятия не имеет и не парсит Ваш мейкфайл на предмет задействованных Вами путей.

В конце всех манипуляций не вредно сделать в контекстном меню на имени проекта в Project Explorer Index->Rebuild.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это потому, что местный индексер понятия не имеет и не парсит Ваш мейкфайл на предмет задействованных Вами путей.

 

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

 

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

 

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

 

После того, как я указал в свойствах проекта Project->Properties->C/C++ General->Paths and Symbols->Includes пути к файлам stdint.h и stddef.h все заработало.

Изменено пользователем Alekseeey

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После того, как я указал в свойствах проекта 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Очень похоже на мою давнюю проблему. Вот здесь обсуждалась. (Решение там же, несколькими сообщениями позже)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...