Eclipse CDT не отслеживает макрос определяет правильно - PullRequest
12 голосов
/ 11 марта 2011

В настройках сборки у меня есть определение DEBUG в конфигурации отладочной сборки, так что я могу заставить свой код делать отдельные вещи в зависимости от типа сборки.

Однако в Eclipse он затемняет части кода, которые исключены препроцессором, и это не идет в ногу, когда я меняю настройку (независимо от того, собираюсь ли я сейчас отлаживать или выпускать).Итак, у меня есть куча кода, который постоянно затемнен, и индексатор Eclipse и другие полезные функции не работают внутри этих областей.

Как исправить?кто-нибудь еще сталкивался с этим?

Обновление: проблема сохраняется.В конце концов я отказался от своих конфигураций сборки модульного теста и просто поместил эту функциональность в переключатель командной строки.Просто для того, чтобы я мог заставить индексирование работать, пока я пишу свои модульные тесты.

Ответы [ 4 ]

19 голосов
/ 05 июня 2012

Необходимо установить параметр «Конфигурация сборки для индексатора» на «Использовать активную конфигурацию сборки» в настройках индексатора проектов C / C ++.Откройте панель свойств для проекта, перейдите в раздел Общие и индексаторы c / C ++ и включите специфичные для проекта настройки и измените радиокнопку внизу на «Использовать активную конфигурацию сборки».

CDT indexer settings

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

2 голосов
/ 07 июля 2011

Перейдите в Свойства вашего проекта, затем перейдите в C / C ++ Общие-> Пути и символы-> Символы. Добавьте туда свои определения, и это будет работать.

1 голос
/ 02 октября 2012

1) Если вы хотите изменить определения для вашей системы на основе конфигурации сборки, вам нужно сделать, как сказал dgrant: «Свойства проекта и выберите C / C ++ General-> Paths and Symbols, затем выберите вкладку Symbols», ноВы должны убедиться, что в верхней части окна выбрана правильная конфигурация.Также убедитесь, что при добавлении символа в список, который вы НЕ делаете, установите флажок «добавить ко всем конфигурациям».

2) Если вы хотите, чтобы ваш правильный набор символов анализировался CDT в вашем редакторе, вам также необходимо убедиться, что у вас активна правильная конфигурация сборки.Для этого щелкните правой кнопкой мыши свой проект и выберите «Build Configurations» -> «Set Active» -> и выберите конфигурацию сборки, которую вы хотите сделать активной.CDT теперь будет анализировать все файлы, как если бы эта конфигурация сборки была активной, используя глобальные символы, которые вы определили на последнем шаге.

Существует проблема, с которой я сталкивался в каждой версии Eclipse, где он не 't всегда решайте немедленно перестроить ваши индексные файлы.Чтобы сделать это, вы можете либо запустить сборку (сборка фактически не должна завершаться), либо вы можете щелкнуть правой кнопкой мыши на своем проекте и перейти к Index-> ​​Rebuild.Оба вызывают немедленную реиндексацию.Однако вам это не нужно, я могу подтвердить, что простое изменение конфигурации сборки, как описано в шаге 2 выше, приведет к тому, что #ifdef, проверяющий символ, определенный только в одной из моих конфигураций сборки, сразу же станет серым илине серого цвета, как следует.

0 голосов
/ 08 июля 2013

Моим удовлетворительным решением было перейти от Eclipse к редакторам с работающим плагином libclang: Sublime Text, Vim.

Для интеллектуальной IDE для C / C ++, вероятно, нельзя ошибиться с XCode или MSVC.

...