Как я могу заставить Eclipse индексировать целое дерево исходных текстов C / C ++, которое содержит несколько «make проектов»? - PullRequest
25 голосов
/ 01 сентября 2011

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

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

 src
   -include (common headers)
   -lib
     -libIO (source code for this library)
     -libGUI  (source code for this library)
   -pgms
     -pgm1  (source code and headers for this pgm)
     -pgm2  (source code and headers for this pgm)

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

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

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

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

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

Ответы [ 13 ]

27 голосов
/ 12 июля 2012

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

Способ устранения проблемы:

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

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

10 голосов
/ 24 июля 2012

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

5 голосов
/ 02 сентября 2011

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

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

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

4 голосов
/ 22 мая 2013

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

3 голосов
/ 10 июня 2014

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

2 голосов
/ 19 октября 2017

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

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

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

2 голосов
/ 10 июля 2015

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

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

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

1 голос
/ 31 мая 2016

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

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

0 голосов
/ 23 ноября 2016

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

0 голосов
/ 08 октября 2015

Я использую

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

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

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

...