Подтвердить что ты не робот

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

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

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

 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/С++ для каждого листа в моем дереве. Я не могу найти способ сделать это произойдет.

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Как я исправил проблему:

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

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

Ответ 8

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

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

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

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

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

Ответ 9

В Coocox IDE (Eclipse + gcc) проблема решена путем перехода из меню файлов Edit > Preferences > C/С++/Indexer > Сконфигурируйте конфигурацию для индексатора, настроенного на конфигурацию Active build и перестройте проект (Ctrl R).

Ответ 10

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

Ответ 11

Я использую

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

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

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

Ответ 12

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

Ответ 13

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

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

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