С этой проблемой трудно справиться. Это не очень хорошо работает.
Это применимо к Eclipse 3.4.1 / CDT 5.0.1
Из того, что я могу сказать, когда вы создаете "проект C / C ++" в CDT, он попытается автоматически определить ваши пути включения. Отличная идея, но реализация ужасна.
Если вы удалите или переименуете каталог, старый каталог останется. Если вы переименуете проект, старый каталог останется. Когда Eclipse не может найти этот старый каталог, он выдает это предупреждение.
Мое решение - полностью отключить автоматическое обнаружение и вручную управлять путями включения. Вам нужен этот список включаемых путей для таких вещей, как нажатие ctrl (автоматическая навигация по определениям / functions / files / etc) и затенение блоков #define. Он строит индекс из этого списка.
Вот что вам нужно сделать:
Щелкните правой кнопкой мыши ваш проект в проводнике проекта и перейдите в свойства.
Перейдите в C / C ++ Build -> Параметры обнаружения
Снимите флажок «Автоматизировать обнаружение путей и символов»
Теперь перейдите в C / C ++ Общие -> Пути и символы
На вкладке Включения вы увидите языки ассемблера, языки C и C ++ с соответствующими автоматически обнаруженными каталогами включения.
Перейти на все 3 языка и удалить все.
Откройте свой make-файл и расшифруйте ваши включения на соответствующем языке.
Переименование проекта все равно приведет к сбою индексатора. $ {project_name} и другие глобальные переменные, похоже, не работают. Если у вас возникли проблемы, используйте кнопку «Рабочая область», чтобы перейти к каталогу, который вы хотите включить, поскольку это, кажется, всегда работает, но ввод его вручную НЕ дает.
Нажмите «Применить», затем ОК.
Щелкните правой кнопкой мыши по вашему проекту, перейдите в index-> rebuild
Перезапустите затмение.
Это должно исправить вещи навсегда. Каждый раз, когда что-то неправильно скрывается из-за блока #define или #ifdef, это потому, что этот список файлов устарел. Вы также узнаете, что этот список устарел, если вы получите «неразрешенные включения» в строках #include.
Даг Шефер, надеюсь, Google проиндексирует это, вы найдете свое имя и исправите эту ужасную реализацию. =)