使用Cygwin GCC的Eclipse CDT:符号和路径的自动发现

5
我正在使用Eclipse CDT和Cygwin GCC 3作为编译器。我的项目使用自定义的Makefile。

问题在于,当调试代码时,它无法定位源文件,即使我为以下内容添加了自定义路径映射:/cygdrive/c <-> c:\

除此之外,我对所有标准头文件都得到“未解析的包含”,尽管程序编译和运行良好。

我把问题追溯到了“自动发现”选项,它显示了以下错误:

screenshot1

请注意,我确保工作区目录在没有任何空格的路径上。奇怪的是,当我在shell中运行有问题的命令时,它可以正常运行,并输出以下内容:

$ 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!)

当您关闭自动发现后,如何在Eclipse中运行和调试添加了此类路径的代码? - Aditya P
1个回答

6
你经常收到有关混合使用eclipse和cygwin的投诉。问题的关键是,eclipse只能理解Windows环境,而cygwin并不完全如此。
请按照Windows风格在eclipse中定义路径。此外,如果/usr在C:\cygwin下,则必须给出完整路径。否则,eclipse将尝试在c:\usr下查找它并失败。
另外,你的路径定义是附加到还是替换了你的Windows环境?附加到环境可能会更好。
从未尝试过自动检测 - 你可能需要在.cproject中硬编码这些路径。

2
谢谢,我通过关闭自动发现并手动添加“Windows风格”的路径来修复警告。很遗憾它不能像NetBeans那样开箱即用地在Cygwin上运行。 - Amro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接