Eclipse-CDT:在Windows下针对Linux进行交叉编译时的自动path发现

我正在使用Eclipse-CDT开发和编译Linux项目。 作为主机,Linux或Windows都可以使用。

使用特殊的构build命令将项目创build为Makefile项目,所以我将build命令从make为我们特殊的命令,并且认真地将“Build”和“Clean”命令行更改了。 build命令使用不在$PATH的目录中的gcc,因为整个编译器套件位于版本控制系统中。 (正确的$PATH由build命令设置。)

这在Linux下正常工作:Eclipse自动学习符号和包含文件。 但是,在Windows下,符号被识别,但包含path不是。

当我查看workspace/.metadata/.plugins/org.eclipse.cdt.make.core目录中生成的MyProject.sc文件时,我看到包含文件被识别,但是前面加上了C:\cygwin

GCC命令行使用没有驱动器盘符的绝对path。 (整个源代码树位于一个特殊的驱动器(例如W: :),CWD在这个驱动器上)。 例如,用-I /net_libs/lib1/inc调用gcc / g++ ,Eclipse识别C:\cygwin\net_libs\lib1\inc

顺便说一句:标准包含path被正确识别(例如W:/toolchain/win32/i686-pc-linux-gnu/include/c++/4.2.1 )。

Build-Directory被设置为与源和包含在同一驱动器上的Makefile的目录。

我尝试了各种“工具链”设置(Cygwin,MinGw,Linux gcc),结果每次都是一样的。 (更改设置后,我甚至停止了Eclipse,删除了sc文件并再次启动Eclipse)。

我不知道为什么Eclipse知道我的Cygwin安装在C:\ Cygwin中 – 安装不被编译器或相关工具使用。

当我手动更改.sc文件并更正path并重新启动Eclipse时,一切正常。

你有什么提示可能是什么问题?

看看Project-> Propterties-> C / C ++ Build-> Discovery Options。
有一个编译器调用命令 – 通常设置为gcc ,这意味着“路径中的gcc”。 尝试从你的构建系统设置这个到你的gcc。