我的团队大多数人使用.bat文件设置路径,然后运行构建。 .bat文件允许选择多个不同的编译器/目标平台,但都使用某些版本的GCC / G ++或类似的编译器。
我创建了一个Eclipse项目,它只使用.bat文件,而不是重新发明轮子并追踪每个构建所需的所有路径(如果有人更新过.bat文件我需要更新)反正)。
这非常适合构建,我甚至可以看到编译器错误/警告,但总会出现一些额外的错误:
Program "gcc" not found in PATH
Program "g++" not found in PATH
我已经看到很多关于这些和类似错误的问题,但在这种情况下,用户无法构建,解决方案是安装工具和/或更新其PATH或Eclipse环境设置。我不想这样做;我需要安装所有工具,并且.bat文件可以很好地设置PATH进行构建。有没有办法来抑制这些错误,或者Eclipse没有尝试找到编译器可执行文件,因为构建成功了?
编辑:正如我在目前为止收到的答案中所建议的那样,在全局发现设置中放入编译器的完整路径之后,这是在控制台上输出的,这不是&#39即使它起作用,也是我最喜欢的解决方案,但我可能会处理它。无论错误如何都不会消失:
15:27:24 **** Running scanner discovery: CDT GCC Built-in Compiler Settings MinGW ****
"C:\\redacted\\localapps\\MinGW5\\bin\\g++.exe" -E -P -v -dD C:/Project_Files/redacted/code_workspaces/redacted/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C
Reading specs from C:/redacted/localapps/MinGW5/bin/../lib/gcc/mingw32/3.4.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.2 (mingw-special)
C:/redacted/localapps/MinGW5/bin/../libexec/gcc/mingw32/3.4.2/cc1plus.exe -E -quiet -v -P -iprefix C:\redacted\localapps\MinGW5\bin\../lib/gcc/mingw32/3.4.2/ C:/Project_Files/redacted/code_workspaces/redacted/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C -dD
ignoring nonexistent directory "C:/redacted/localapps/MinGW5/bin/../lib/gcc/mingw32/3.4.2/../../../../mingw32/include"
#define __cplusplus 1
ignoring nonexistent directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.2"
#define __STDC_HOSTED__ 1
ignoring nonexistent directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.2/mingw32"
#define __GNUC__ 3
ignoring nonexistent directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.2/backward"
...
然后是一堆#define
s
我在此输出的发现选项中使用的命令字符串是C:\redacted\localapps\MinGW5\bin\${COMMAND}.exe ${FLAGS} -E -P -v -dD "${INPUTS}"
。
答案 0 :(得分:2)
根据提供的信息,这些错误来自CDT的扫描仪发现部分。
在我的机器上,完整错误如下所示:
Description Location Type
Program "g++" not found in PATH Preferences, C++/Build/Settings/Discovery, [CDT GCC Built-in Compiler Settings MinGW] options C/C++ Scanner Discovery Problem
Program "gcc" not found in PATH Preferences, C++/Build/Settings/Discovery, [CDT GCC Built-in Compiler Settings MinGW] options C/C++ Scanner Discovery Problem
或作为截图
这里发生的事情是Eclipse CDT(试图)启动GCC和G ++以找出包含路径等内容的全局设置。
要解决此问题,请转到错误消息中指定的位置并调整扫描仪设置。以下是与我收到的特定错误一致的匹配设置。
您的错误可能出现在项目中或全局设置中。
要更新MinGW设置,您可以提供看起来像GCC / G ++的批处理文件的路径,但首先正确设置环境,或者您可以直接指向Eclipse CDT自己找不到的GCC。
例如,您可以:
D:\path\to\my\compilers\${COMMAND}.exe ${FLAGS} -E -P -v -dD "${INPUTS}"
作为设置而不是默认设置。
为了帮助调试,请检查控制台视图中的分配控制台,以确切了解正在运行的内容以及正在生成的输出。
以下是当它不起作用时你可能会看到的。希望控制台中的错误消息足以解决您计算机上的问题。
21:12:54 **** Running scanner discovery: CDT GCC Built-in Compiler Settings MinGW ****
"D:\\path\\to\\my\\compilers\\g++.exe" -E -P -v -dD C:/Temp/workspace/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C
Cannot run program "D:\path\to\my\compilers\g++.exe": Launching failed
Error: Program "D:\path\to\my\compilers\g++.exe" not found in PATH
PATH=[\bin;\bin; -- snip --]
21:12:54 Build Finished (took 37ms)
以下是匹配的屏幕截图:
如果确实有效,你应该会看到许多#define
等显示编译器的全局状态。