Eclipse CDT не может найти включаемый файл, если не указан полный относительный путь

Я использую Eclipse некоторое время, и это блокирует меня. Я создал библиотеку с именем ITS8410_LIB несколько недель назад, а затем оставил ее, пока работал над вспомогательной библиотекой Reach_Lib. Каталог включает пути, которые я добавил, когда я впервые создал проект, работает нормально. Сегодня я закончил Reach_Lib и пошел, чтобы добавить его путь к ITS8410_Lib. Я использовал параметры проекта в свойствах C ++, чтобы добавить путь к рабочей области (как я делал это много раз раньше). У меня есть только одна конфигурация сборки. Путь показан на изображении (выделенный синим цветом является тем, о котором я говорю в этом вопросе).

введите описание изображения здесь
Когда я иду, чтобы включить файл в источник, ни Eclipse (я вижу желтый вопросительный знак), ни компилятор (я получаю ошибку компилятора) не может найти файл. Если я добавлю путь к каталогу, используя полный синтаксис абсолютного пути, результаты будут такими же. Я могу изменить исходный код и указать #include по полному относительному пути из текущего каталога, и он найден. Eclipse просто не будет использовать путь, указанный в настройках проекта. У того же Reach_Lib есть связанный с ним проект модульного теста, и путь указан с настройкой рабочей области оттуда, и он отлично работает.

введите описание изображения здесь

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

введите описание изображения здесь

Работает под Windows7 64 бит (но с использованием 32-битной версии Eclipse Indigo).
Я пытался:

  1. восстановление индексов
  2. Выход и перезапуск Eclipse несколько раз
  3. рабочее пространство и абсолютные пути к файлам
  4. изменение порядка включаемых путей
  5. разные .h включаемые файлы в проекте

Я заглянул в файл .cproject, и хотя я не знаю, как должны выглядеть эти файлы, мне кажется, у меня есть проблема. Может быть, вопрос в том, как сказать Eclipse перестроить файл .cproject? Похоже, у меня есть два похожих раздела, и Eclipse запутывается. Я вижу разные номера версий, помеченные как суффиксы. Мне кажется, что визуальные редакторы позволяют мне изменять один раздел, а IDE и компилятор заботятся только о другом разделе. Вот соответствующие порции

...

                <folderInfo id="nbeclipse.toolchain.nbl.rel.396284009." name="/" resourcePath="">
<toolChain id="nbeclipse.toolchain.nbl.rel.tc.1465290409" name="NetBurner Device Library" superClass="nbeclipse.toolchain.nbl.rel.tc">
<targetPlatform id="nbeclipse.toolchain.nbl.rel.tc.targetPlatform.283367649" isAbstract="false" name="NetBurner Module Library" superClass="nbeclipse.toolchain.nbl.rel.tc.targetPlatform"/>
<builder buildPath="${workspace_loc:/ITS8410_Lib/Release}" id="nbeclipse.toolchain.nbl.rel.tc.builder.2064025940" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Release ELF builder (MINGW)" superClass="nbeclipse.toolchain.nbl.rel.tc.builder"/>
<tool id="nbeclipse.toolchain.nbl.rel.tc.gcc.278195048" name="GNU C Compiler" superClass="nbeclipse.toolchain.nbl.rel.tc.gcc">
<inputType id="nbeclipse.toolchain.nbl.rel.tc.gcc.input.1060035859" name="GNU C Input" superClass="nbeclipse.toolchain.nbl.rel.tc.gcc.input"/>
</tool>
<tool id="nbeclipse.toolchain.nbl.rel.tc.gpp.767008127" name="GNU C++ Compiler" superClass="nbeclipse.toolchain.nbl.rel.tc.gpp">
<option id="nbeclipse.toolchain.super.gcc.directories.includepaths.1666029541" name="Include paths (-I)" superClass="nbeclipse.toolchain.super.gcc.directories.includepaths" valueType="includePath">
**inside here is an option list with all my include paths**
...
</folderInfo>

Затем сразу после папки «Закрыть информацию» начинается другой раздел «Информация о папке».

                <folderInfo id="nbeclipse.toolchain.nbl.rel.396284009.2022231003" name="/" resourcePath="src">
<toolChain id="nbeclipse.toolchain.nbl.rel.tc.1982112905" name="NetBurner Device Library" superClass="nbeclipse.toolchain.nbl.rel.tc" unusedChildren="">
<targetPlatform id="nbeclipse.toolchain.nbl.rel.tc.targetPlatform" isAbstract="false" name="NetBurner Module Library" superClass="nbeclipse.toolchain.nbl.rel.tc.targetPlatform"/>
<tool id="nbeclipse.toolchain.nbl.rel.tc.gcc.1671008421" name="GNU C Compiler" superClass="nbeclipse.toolchain.nbl.rel.tc.gcc.278195048">
<inputType id="nbeclipse.toolchain.nbl.rel.tc.gcc.input.436341699" name="GNU C Input" superClass="nbeclipse.toolchain.nbl.rel.tc.gcc.input"/>
</tool>
<tool id="nbeclipse.toolchain.nbl.rel.tc.gpp.498310867" name="GNU C++ Compiler" superClass="nbeclipse.toolchain.nbl.rel.tc.gpp.767008127">

**the newly added paths don't show up here, if I add them manually things start working**

7

Решение

Ключ к ответу был опубликован dbrank0, но он не выдвинул его в ответ, поэтому я просто проголосовал за комментарий. Что-то пошло не так в файле .cproject, и редактирование его вручную устранило проблему.

2

Другие решения

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

1

полный абсолютный путь в любое время.
при использовании относительного каталога вы должны быть осторожны.
в eclipse текущий каталог не совпадает с текущим каталогом.

string strRunDir, strCurDir;
strRunDir = AfxGetApp()->m_pszExeName;
strCurDir = GetCurrentDirectory(...);

и strRunDir! = strCurDir;

когда вы хотите использовать относительный каталог, вы должны ссылаться на runDir;

0
По вопросам рекламы [email protected]