压制;“未找到程序”;eclipsecdt中的错误

压制;“未找到程序”;eclipsecdt中的错误,eclipse,eclipse-cdt,Eclipse,Eclipse Cdt,我的大多数团队使用.bat文件来设置路径,然后运行构建。.bat文件允许选择多个不同的编译器/目标平台,但都使用某些版本的GCC/G++或类似的编译器 我创建了一个Eclipse项目,它只使用.bat文件,而不是重新发明轮子并跟踪每个构建所需的所有路径(如果有人更新了.bat文件,我需要更新这些路径) 这对构建非常有用,我甚至可以看到编译器错误/警告,但总会出现一些额外的错误: Program "gcc" not found in PATH Program "g++" not found in

我的大多数团队使用.bat文件来设置路径,然后运行构建。.bat文件允许选择多个不同的编译器/目标平台,但都使用某些版本的GCC/G++或类似的编译器

我创建了一个Eclipse项目,它只使用.bat文件,而不是重新发明轮子并跟踪每个构建所需的所有路径(如果有人更新了.bat文件,我需要更新这些路径)

这对构建非常有用,我甚至可以看到编译器错误/警告,但总会出现一些额外的错误:

Program "gcc" not found in PATH
Program "g++" not found in PATH
我看到了很多关于这些错误和类似错误的问题,但在这种情况下,用户无法构建,解决方案是安装工具和/或更新其路径或Eclipse环境设置。我不想那样做;我需要的所有工具都已安装,并且.bat文件可以很好地设置构建路径。有没有办法抑制这些错误,或者让Eclipse不要尝试查找编译器的可执行文件,因为构建还是成功的


编辑:正如我目前收到的答案中所建议的那样,在全局发现设置中放置了编译器的完整路径后,控制台上会有一个输出,虽然这不是我最喜欢的解决方案,但我可能会处理它。无论错误如何,都不会消失:

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"
...
然后是一堆定义


我在这个输出的发现选项中使用的命令字符串是
C:\redacted\localapps\MinGW5\bin\${command}.exe${FLAGS}-E-p-v-dD“${INPUTS}”

根据提供的信息,这些错误来自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
或者作为截图

这里发生的事情是EclipseCDT正在(尝试)启动GCC和G++以了解包含路径等的全局设置

要解决此问题,请转到错误消息中指定的位置并调整扫描仪设置。下面是我收到的特定错误的匹配设置

您的错误可能在项目或全局设置中

要更新MinGW设置,您可以提供一个批处理文件的路径,该批处理文件看起来像GCC/G++但首先要正确设置您的环境,或者您可以直接指向Eclipse CDT自己找不到的GCC

例如,您可以拥有:

D:\path\to\my\compilers\${COMMAND}.exe ${FLAGS} -E -P -v -dD "${INPUTS}"
作为设置,而不是默认设置

要帮助调试,请检查console视图中的Allocate console,以查看正在运行的内容和正在生成的输出

这是当它不起作用时你可能看到的。希望控制台中的错误消息足以解决您机器上的问题

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
等等。

您是从bat文件启动Eclipse CDT,还是使用bat文件进行构建?您还可以澄清您在哪里看到错误吗?在CDT构建控制台(每个项目或全局)、另一个控制台或其他地方?我在Eclipse的构建配置中使用.bat文件,而不是从.bat文件启动Eclipse。这些错误出现在Eclipse的problems视图中,而不是构建控制台中。如果我的回答不正确,请从问题视图中详细说明问题的全部细节,并说明您正在使用的CDT/Eclipse版本,因为在较新的版本中,错误消息的质量可能会更好。另外,GCC 3.4.2确实很古老(将近12年了!),它本身可能是导致奇怪行为的原因。您使用的是什么版本的gdb。我相信CDT现在官方只支持gdb 7.1及以上版本(但我必须查一下才能确定),很高兴知道。看起来6.6版包含在我获取编译器的“官方”包中,尽管我可能使用的是来自不同安装位置的gdb。如果gdb将来做奇怪的事情,至少我知道一个合理的理由;至少,你已经猜到了我收到的全部错误信息。但我不知道如何修复配置。我尝试提供默认生成使用的gcc.exe的完整路径,以代替我的MinGW编译器设置的全局配置中的“${COMMAND}”(如第二个屏幕截图所示),但错误仍然存在。请注意,我在“项目设置”中没有“发现”选项卡,只有在“全局设置”中,尽管“设置”页面顶部的标签声称它们可以被特定于项目的设置以某种方式覆盖。这应该是输入自定义命令而不是
${command}
。尝试在console视图中分配控制台,以查看正在运行的内容。例如,通过控制台和我的自定义批处理文件,我看到输出:
20:54:28****正在运行扫描程序发现:CDT GCC内置编译器设置MinGW****“c:\\path\\to\\my.bat”-E-P-v-dD C:/Temp/workspace/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C
PS覆盖不会解决您的问题,因为一旦您告诉cdt您正在使用MingGW,我想它会尝试获取全局设置(即使它不会使用它们)当我指定编译器的完整路径而不是${COMMAND}时,错误不会消失。我不能使用.bat文件,因为.bat文件是make的包装,而不是编译器。控制台中有什么输出?