2009-09-20 71 views
5

我使用Eclipse CDT和Cygwin GCC 3作爲編譯器。我的項目使用自定義的Makefile。Eclipse CDT與Cygwin GCC:自動發現符號和路徑

的問題是,調試代碼時,它無法找到源文件,即使我添加了一個自定義路徑映射:/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

我該如何解決這個問題,以便它發現包含路徑和定義的符號?我應該嘗試關閉自動發現並對.c項目文件中的所需路徑進行硬編碼嗎?任何幫助表示讚賞(我只問你不建議使用MinGW而不是Cygwin!)

+0

你怎麼跑,並在eclipse調試時加這樣的路徑?關閉自動發現後 – 2011-06-01 09:47:47

回答

6

你的是一個關於混合eclipse & cygwin的frequest來源。問題的癥結在於,eclipse只能理解cygwin的窗口環境,而不是那麼多。

在eclipse窗口樣式中定義您的路徑。/usr也在C:\ cygwin下,你必須給它完整的路徑。否則eclipse會試圖在c:\ usr下找到它,然後空出來。

此外,你的路徑定義追加到或取代你的Windows環境?你可能會更樂意附加到你的環境而不是替換。

沒試過自動檢測 - 您可以通過硬編碼在.cproject這些路徑

+2

謝謝,我設法通過關閉自動發現並手動添加路徑*'Windows樣式'*來修復警告。太糟糕了,它不像NetBeans那樣與Cygwin一起工作。 – Amro 2009-10-06 18:58:25