Eclipse CDT с Cygwin GCC: автоматическое обнаружение символов и путей

Я использую Eclipse CDT с Cygwin GCC 3 в качестве компилятора. В моем проекте используется собственный Makefile.

Проблема в том, что при отладке кода ему не удалось найти исходные файлы, хотя я добавил настраиваемое сопоставление пути для: /cygdrive/c <-> c:\

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

Я отследил проблему до параметра «автоматическое обнаружение», который показывает следующую ошибку:

screenshot1

Обратите внимание, что я убедился, что каталог рабочей области находится на пути без пробелов. Странно то, что когда я запускаю эту проблемную команду в оболочке, она отлично работает со следующим выводом:

$ gcc -E -P -v -dD C:/Users/Amro/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /managed/gcc-build/final-v3-bootstrap/gcc-3.4.4-999/configure --verbose --program-suffix=-3 --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/cc1.exe -E -quiet -v -P -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/lib/../../include/w32api C:/Users/Amro/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c -mtune=pentiumpro -dD
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/include"
ignoring duplicate directory "/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/lib/../../include/w32api"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
 /usr/include
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api
End of search list.
#define __STDC_HOSTED__ 1
#define __GNUC__ 3
       [.... truncated ....]
#define __unix__ 1
#define __unix 1

Я также попытался вручную добавить в путь включения:

screenshot2

Как я могу исправить это, чтобы он обнаруживал как включаемые пути, так и определенные символы? Стоит ли мне попробовать отключить автоматическое обнаружение и жестко указать необходимые пути в файле .cproject? Любая помощь приветствуется (я только прошу вас не предлагать использовать MinGW вместо Cygwin!)


person Amro    schedule 20.09.2009    source источник
comment
Как вы запускаете и отлаживаете в eclipse, когда добавляете такие пути? после отключения автоматического обнаружения   -  person Aditya P    schedule 01.06.2011


Ответы (1)


Вы - частый источник жалоб по поводу смешивания eclipse и cygwin. Суть проблемы в том, что eclipse понимает только среду Windows и cygwin, ну не очень.

Определите свои пути в стиле окон затмения. Также / usr находится в папке C: \ cygwin, вы должны указать ему полный путь. В противном случае eclipse попытается найти его в каталоге c: \ usr и окажется пустым.

Кроме того, ваши определения путей дополняют или заменяют среду Windows? Вероятно, вам будет приятнее добавлять в свою среду, чем заменять.

Никогда не пробовал автоопределение - возможно, вам придется жестко закодировать эти пути в .cproject

person DaveParillo    schedule 05.10.2009
comment
Спасибо, мне удалось исправить предупреждения, отключив автоматическое обнаружение и вручную добавив пути «стиль Windows». Жаль, что он не работает с Cygwin из коробки, как NetBeans. - person Amro; 06.10.2009