Eclipse CDT indexer - как решить неразрешенные
У меня есть рабочее пространство с несколькими проектами, которые все компилируются без проблем. Однако некоторые из проектов дают много предупреждений в редакторе о неразрешенных символах из-за неразрешенных включений. Большинство из них являются заголовками других проектов в рабочей области или сторонних библиотек.
Googling предполагает, что это проблема с индексом, но я не нашел каких-либо последовательных объяснений, как это исправить. Я полагаю, мне нужно добавить пути к этим библиотекам в индекс PATH, но я не вижу любой вариант сделать это (я использую Juno).
Может кто-нибудь объяснить мне, как настроить CDT-указатель?
Я также не знаю, как включить предупреждения для заголовков STL в двух проектах. Некоторые заголовки STL разрешены, но другие - нет, и список не кажется одинаковым между двумя проектами (такие вещи, как вектор и iostream, но не sstream или string, другие не обнаруживают iostream).
Возможно, это релевантно: это проекты на С++, но все расширения файлов -.c. Я сменил команду GCC C Compiler на "g++", чтобы скомпилировать их, но я думаю, мне также нужно что-то сделать с настройками индексатора, чтобы справиться с этим?
Ответы
Ответ 1
Хорошо, поэтому я исправил эту проблему.
-
Неразрешенные включены из других проектов в рабочей области, а сторонние библиотеки были решены путем добавления других проектов в качестве ссылок. Я предполагаю, что компилятор знал, где искать, потому что я добавил места в список Includes, но индексатор не сделал (возможно, из-за затмения только заголовки обработки один раз?)
-
Неразрешенный включает в себя STL I, измененный всеми моими .c файлами, которые на самом деле были С++ для .cpp. Недостаточно просто сменить команду компиляции на "g++", чтобы сказать, что индексщик рассматривает проект как С++.
В случае 1) мне нужно сначала очистить/перестроить индекс проектов, на которые ссылаются, чтобы удалить неразрешенные ошибки include.
Ответ 2
Щелкните правой кнопкой мыши свой проект в рабочей области, выберите Properties
→ C++ General
→ Paths and Symbols
, затем добавьте в него дополнительные символы и символы для своего конкретного компилятора, добавьте библиотеки и другие необходимые материалы на вкладках. После этого нажмите Apply
- он должен начать повторную индексацию, и ваши проблемы не исчезнут.
Ответ 3
У меня была аналогичная проблема, в которой мой проект будет строиться, но показал, что в Eclipse Kepler не было разрешено.
В моем случае я взял существующий проект ARM и создал настраиваемую конфигурацию сборки, в которой использовалась другая цепочка инструментов. В новую конфигурацию сборки были включены все правильные версии, поэтому проект был создан правильно, но индекс не собирал его.
Я исправил это, установив индекс для использования конфигурации активной сборки. В Window- > Preferences- > C/С++ → Indexer, в разделе "Конфигурация сборки для индексатора" я выбрал "Использовать конфигурацию активной сборки", и он очистил его.
Ответ 4
Все ответы полезны, но есть еще один трюк, который решил мою проблему.
Я узнал, что в отличие от компилятора индексщик не обрабатывает подкаталоги включенных путей. Поэтому вам нужно быть более конкретным при включении файлов заголовков.
Пример
#include "подкаталог\include_2.h"