CLion:错误:C编译器“C:/MinGW/bin/gcc.exe”无法编译一个简单的测试程序。

11

我正在尝试在Windows 7上使用MinGW运行CLion,但由于某种原因CMake无法编译简单的测试程序。然而,当我直接调用编译器而非CMake创建一个简单的Hello World文件时,它可以很好地编译。

我已经尝试过几个不同版本的MinGW,但错误并没有改变。我甚至卸载了杀毒软件以查看是否是问题所在,但仍然没有任何改变。

我将MinGW和CMake都添加到了环境变量中。起初我以为这可能是TEMP文件夹权限的问题,但它们似乎都很正常。我也是管理员账户。

这是我在CLion中收到的错误:

Error:The C compiler "C:/MinGW/bin/gcc.exe" is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp
Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTryCompileExec141319549/fast"
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTryCompileExec141319549.dir\build.make CMakeFiles/cmTryCompileExec141319549.dir/build
mingw32-make.exe[1]: Entering directory 'C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp'
"C:\Program Files (x86)\JetBrains\CLion 1.0\bin\cmake\bin\cmake.exe" -E cmake_progress_report C:\Users\Jim\.clion10\system\cmake\generated\4cb6a70c\4cb6a70c\__default__\CMakeFiles\CMakeTmp\CMakeFiles 1
CMakeFiles\cmTryCompileExec141319549.dir\build.make:56: recipe for target 'CMakeFiles/cmTryCompileExec141319549.dir/testCCompiler.c.obj' failed
process_begin: CreateProcess(C:\Users\Jim\AppData\Local\Temp\make68804-1.bat, C:\Users\Jim\AppData\Local\Temp\make68804-1.bat, ...) failed.
make (e=2): Het systeem kan het opgegeven bestand niet vinden.
mingw32-make.exe[1]: *** [CMakeFiles/cmTryCompileExec141319549.dir/testCCompiler.c.obj] Error 2
mingw32-make.exe[1]: Leaving directory 'C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp'
Makefile:117: recipe for target 'cmTryCompileExec141319549/fast' failed
mingw32-make.exe: *** [cmTryCompileExec141319549/fast] Error 2
CMake will not be able to correctly generate this project.

当我尝试在CMD中使用CMake时,出现了以下错误:enter image description here


我尝试了你说的,但错误与之前相同。这是日志输出。http://pastebin.com/hMFFN5Gs - Jim Bransen
我卸载了我的杀毒软件,禁用了Windows Defender,因为它出于某种原因开启了,甚至禁用了我的防火墙。我已经尝试过MinGW-w64和其中一个TDM版本,但它们都会出现相同的错误。但无论如何,我再次尝试了MinGW-w64和最新的CMake。这是我尝试您的建议时得到的日志:http://pastebin.com/wZZWx9Dy,这些日志与之前几乎完全相同。 - Jim Bransen
它说“找不到文件”...你能在构建目录中找到一个生成的Makefile吗?(位于C:/Users/Jim/Documents/test/buidl/CMakeFiles/CMakeTmp中)如果可以,请发布它... buidl只是一个拼写错误,对吧?无论如何,编译器测试已经通过了,只是Make测试没有通过。尝试使用ninja。 - Antonio
呵呵,是的,这只是一个拼写错误。无论如何,我在你建议的目录中找不到任何东西。我现在尝试了Ninja和CMake似乎没有给我报错,但我找不到编译后的hello world。这些是我从它那里得到的日志:http://pastebin.com/KK1GWHDb - Jim Bransen
我已经成功让Ninja与CLion配合工作了,虽然有点不稳定但是能用。我安装了MSYS,但它不在我的路径中了。之前我尝试过不安装MSYS,但没有任何改变。我使用的是Windows 7 Professional N版本。 - Jim Bransen
显示剩余3条评论
2个回答

1

使用一个虚拟的cmake项目(一个CMakeLists.txt,只包含cmake_minimum_required(VERSION 2.8)add_executable(helloWorld <your hello world program>)),我们已经确定编译器和CLion不是问题所在,因此可能与make有关。这里是日志。

我猜测你的路径中有msys。如果sh.exe在你的路径中,它已知会引起问题

作为一种安全的替代方案,您可以决定使用ninja来替代cmake(实际上,cmake 在实验中支持它,但在实践中它支持得非常好)。这里您可以找到预构建的软件包(实际上,只需将一个可执行文件放入路径即可)。
CLion内部集成Ninja 应该可以正常工作

仅为了说明:除非您的进程作为正确实例化的MSYS shell的子进程运行,否则永远不应该在$PATH中包含任何MSYS二进制文件。在这种情况下,我猜您应该使用CMake的MSYS Makefiles功能;(猜测,因为我从未发现CMake对我有用,所以我自己不使用它)。如果您正在使用MinGW Makefiles功能,则$PATH中不应该是mingw32-make.exe吗? - Keith Marshall
@KeithMarshall 如果您的信息是针对Him Bransen的问题,请在他的问题下发布,否则他将不会收到通知。 - Antonio
你应该在他的问题下发布它,否则他将不会收到通知。我之前并没有意识到这一点,谢谢提醒。在我看来,这是一个不太完善的功能;尽管如此,我已经在问题下发表了评论,建议他查看回答中的评论。为纪录起见,我之前的评论对你们俩都是相关的。 - Keith Marshall
@KeithMarshall 我的路径中没有MSYS,而cmake确实使用mingw32-make.exe。我已经尝试了一些操作,但仍然无法使其正常工作。我的一个朋友却可以完美地运行它,所以我在想我做错了什么。我的Windows安装也是全新的,所以这很奇怪。 - Jim Bransen
@JimBransen,我不知道你可能做错了什么;如果这是一个CMake问题,我无法提供帮助,因为我对CMake一无所知。为了验证是否是MinGW的问题,你可以使用mingw32-make.exe创建一个简单的测试,但不要使用CMake。 - Keith Marshall
显示剩余3条评论

0

我曾经遇到过类似的问题。在安装CLion之前,你是否已经安装了MinGW?

如果你只安装了MinGW(基础版)的C编译器,那么CLion可能会测试一个不存在的C++编译器。

你可以尝试从MinGW的安装管理器中安装MinGW C++编译器。或者你可以直接删除C:\MinGW文件夹,然后再次启动安装程序,这次添加C和C++编译器。如果还是不行,尝试重新安装CLion。

这是一个对我有效的快速解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接