2010-08-10 32 views
1

我正在使用Eclipse-CDT爲Linux開發和編譯項目。因爲可以使用Linux或Windows的主機。Eclipse-CDT:在Windows下針對Linux進行交叉編譯時的自動路徑發現

該項目創建爲具有特殊構建命令的Makefile項目,因此我將構建命令從make更改爲我們的特殊構建命令,並認真執行了「構建」和「清理」命令行。 build命令使用不在$PATH中的目錄中的gcc,因爲整個編譯器套件位於版本控制系統中。 (正確的$PATH由build命令設置。)

這在Linux下正常工作:Eclipse自動學習符號和包含文件。 但是,在Windows下,符號被識別,但包含路徑不符合。

當我查看workspace/.metadata/.plugins/org.eclipse.cdt.make.core目錄中生成的MyProject.sc文件時,我看到包含文件已被識別,但是前綴爲C:\cygwin

GCC命令行使用不帶驅動器盤符的絕對路徑。 (整個源代碼樹位於特殊驅動器上(例如W:),CWD位於此驅動器上)。 例如用-I /net_libs/lib1/inc調用gcc/g++,Eclipse識別C:\cygwin\net_libs\lib1\inc

順便說一句:標準包含路徑被正確識別(例如W:/toolchain/win32/i686-pc-linux-gnu/include/c++/4.2.1)。

Build-Directory被設置爲與Sources和Includes位於同一驅動器上的Makefile的目錄。

我嘗試了各種「工具鏈」設置(Cygwin,MinGw,Linux gcc),結果每次都是一樣的。 (更改設置後,我甚至停止了Eclipse,刪除了sc文件並再次啓動Eclipse)。

我不知道爲什麼Eclipse知道我的Cygwin安裝在C:\ Cygwin中 - 安裝不被編譯器或相關工具使用。

當我手動更改.sc文件並更正路徑並重新啓動Eclipse時,一切正常。

你有什麼提示可能是什麼問題?

回答

1

看看Project-> Propterties-> C/C++ Build-> Discovery Options。
有一個編譯器調用命令 - 通常設置爲gcc,這意味着「PATH中的gcc」。嘗試從您的構建系統中將其設置爲您的gcc。

+0

此選項僅用於獲取標準包含路徑 - 它被設置爲我的工具鏈編譯器,並且發現工作正常,這些路徑被正確識別。 我認爲我的問題與(Cygwin)路徑映射有關。我在沒有安裝Cygwin的Windows PC上再次嘗試,並且Eclipse沒有映射/到C:\ Cygwin - 而不是映射它 - 因此也不能識別包含路徑。 – IanH 2010-08-29 10:31:11