it-swarm.com.ru

Как я могу заставить Eclipse индексировать целое дерево исходных текстов C/C++, которое содержит несколько "make проектов"?

У меня проблемы с получением Eclipse для индексации моего исходного кода. Сейчас я использую Eclipse Helios для Windows XP.

У меня есть каталог с именем src. В нем у меня есть куча папок, что-то вроде этого:

 ЦСИ 
 -include (общие заголовки) 
 -lib 
 -libIO (исходный код этой библиотеки) 
 -libGUI (исходный код этой библиотеки) 
 -pgms 
 -pgm1 (исходный код и заголовки для этой программы) 
 -pgm2 (исходный код и заголовки для этой программы) 

У каждого листа есть свой Makefile. В src нет файла Makefile верхнего уровня. pgm1 может включать и включает файлы из include и lib/libIO и lib/libGUI.

По сути, я хочу, чтобы Eclipse проиндексировал весь мой каталог src, без необходимости настраивать проект C/C++ для каждого листа в моем дереве. Я не могу найти способ, чтобы это произошло.

Вот мои симптомы; что я пытаюсь решить для:

При редактировании исходного кода в каталоге pgm1, он ссылается на функции, которые объявлены в моих заголовочных файлах include dir и определены в исходных файлах, найденных в lib/libIO. 

Однако, когда я нажимаю F3, чтобы перейти к объявлению функции, Eclipse говорит: «Не удалось найти символ« X »в индексе». Кажется, я не могу заставить Eclipse найти под моим курсором объявление заголовка или определение источника для метода (как это прекрасно делает модуль Java). Это возможно?

24
Jay

Мне удалось решить эту проблему благодаря комментариям здесь .... Я закончил тем, что воссоздал свой проект. Я использовал метод Import для загрузки проекта из CVS и сказал, что для этого нужно использовать мастер New Project. Когда я получил диалоговое окно «Новый проект», я сказал, что это проект C++, и индексирование теперь работает нормально.

Я все еще хотел бы индексировать файлы, не привязывая к нему определенный тип проекта, но, по крайней мере, я нашел ответ. 

Спасибо всем за помощь.

4
Jay

У меня была точно такая же проблема, что и у OP, но по какой-то причине меню в Eclipse, которое я использовал (Helios Service Release 2), не было «Перейти к Свойствам -> Общие положения C/C++ -> Пути и символы -> Местоположение источника». 

Я решил проблему так:

  • в представлении C/C++ щелкните правой кнопкой мыши верхнее имя проекта;
  • в меню выберите New-> C++ Project;
  • в появившемся окне выберите Преобразовать в, а затем выберите проект C++;
  • нажмите кнопку ОК, чтобы закрыть окно.

Eclipse начнет индексирование сразу. В зависимости от размера исходного дерева это может занять некоторое время, но после этого индексирование будет работать окончательно.

27
MHD

Я столкнулся с подобной ситуацией. Я решил это следующим образом: щелкните правой кнопкой мыши проект в проекте View-->select Index-->rebuild.

10
Somabho

Выход из Eclipse. В рабочей области перейдите в «.metadata/.plugins/org.Eclipse.cdt.core» и удалите все, что там. 

4
CppChase

на панели Explorer проекта щелкните правой кнопкой мыши проект, который вы хотите переиндексировать, затем выберите index, затем выберите действие, которое вы хотите

3
user3727512

Индексация файлов и переменных под разными флагами всегда сложна, когда у нас огромный проект, много файлов и, что более важно, множество различных вариантов сборки. Я предпочитаю поиграть с опцией Indexer, чтобы помочь мне просмотреть весь код . Вы можете найти его: Project Properties> C/C++ General/Indexer.

Вы можете выбрать «Включить настройки проекта»

Затем вам нужно выбрать параметры, которые вы хотите для своего проекта . Для конкретной сборки мы можем выбрать «Использовать активную конфигурацию сборки», чтобы учитывались только те файлы и MACROS, которые используются сценарием сборки . Или индексировать все исходные файлы во всем проекте.

2
Binay Kumar Pradhan

Я использую Eclipse Neon 3, вот решение, которое работает для меня:

  • перейти к файлу
  • Новый 
  • Преобразуйте в C/C++ Autotools project Затем выберите ваш проект и закончите.

Завершение индексации может занять некоторое время, это зависит от размера вашего проекта.

2
basslo

У меня возникли проблемы с индексатором Eclipse Luna, когда в объявлении класса было объявление неразрешенного друга - кажется, что индексатор пропустил индексирование остальной части этого класса, и все ссылки на него были показаны индексатором как неразрешенные.

Решение: удалил неразрешенную декларацию друга (в моем случае это был устаревший код, который больше не был нужен).

1
Andreas Lindell

Пожалуйста, попробуйте следующее (мой проект настроен по-другому, поэтому я не уверен, что это будет работать для вас).

Перейдите в Свойства -> Общие сведения о C/C++ -> Пути и символы -> Местоположение источника.

Вы видите свою исходную папку там?

Я наблюдаю такое поведение: Когда я добавляю исходную папку, а затем исключаю ее из сборки, она исчезает из приведенного выше списка. После этого папка больше не индексируется. Повторное добавление его в «Местоположение источника» решает проблему: папка теперь проиндексирована; остается исключенным из сборки (как и предполагалось); виден среди исходных местоположений.

Я считаю, что это ошибка - исключение исходной папки из сборки не должно удалять ее из списка исходных расположений.

0
user443854

В Coocox IDE (Eclipse + gcc) проблема решается путем перехода из меню «Файл» Правка> Настройки> C/C++/Indexer> Конфигурация сборки для Indexer с активной конфигурацией сборки и перестройка проекта (Ctrl). Р).

0
jim

Я использую

Eclipse IDE для разработчиков Linux на C/C++

Версия: Helios Service Release 2.__ Идентификатор сборки: 20110218-0911

Я следовал приведенным выше предложениям и, кроме того, мне пришлось пометить все проекты, на которые есть ссылки (в рабочей области), используя свойства проекта-> Ссылки на проекты.

0
Amir Pauker

В Eclipse Neon у меня работает следующее: Новый проект -> C/C++ -> Проект Makefile с существующим кодом -> Далее. Затем перейдите к коду и завершите создание проекта. Индексирование начинается автоматически.

0
yep

Если проект уже конвертирован в C/C++ и индекс по-прежнему не работает, вы можете щелкнуть правой кнопкой мыши по проекту и Индексу и перестроить. Проект начнет индексацию сразу. 

0
hegu2212