无法使用CMake指定编译器

时间:2012-10-24 17:24:39

标签: gcc cmake mingw

我对此CMakeLists.txt文件有疑问:

cmake_minimum_required(VERSION 2.6)

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)
SET(CMAKE_CXX_COMPILER C:/MinGW/bin/g++)

project(cmake_test)

add_executable(a.exe test.cpp)

使用cmake -G "MinGW Makefiles"调用cmake,它失败并显示以下输出:

c:\Users\pietro.mele\projects\tests\buildSystem_test\cmake_test>cmake -G "MinGW Makefiles" .
-- The C compiler identification is GNU 4.6.1
-- The CXX compiler identification is GNU 4.6.1
-- Check for working C compiler: C:/MinGW/bin/gcc
CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C compiler: C:/MinGW/bin/gcc -- broken
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
  The C compiler "C:/MinGW/bin/gcc" is not able to compile a simple test
  program.

CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:10 (project)

CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: your CXX compiler: "C:/MinGW/bin/g++" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
-- Configuring incomplete, errors occurred!

gcc编译器位于C:/MinGW/bin/并且可以正常工作。

有什么想法吗?

平台:

  • Windows 7
  • MinGW / GCC 4.6

4 个答案:

答案 0 :(得分:56)

永远不要尝试在CMakeLists.txt文件中设置编译器。

有关如何使用其他编译器的信息,请参阅CMake FAQ:

https://gitlab.kitware.com/cmake/community/wikis/FAQ#how-do-i-use-a-different-compiler

(请注意,您正在尝试方法#3,常见问题解答说“(避免)”......)

我们建议避免使用“在CMakeLists中”技术,因为当第一次配置使用不同的编译器时会出现问题,然后CMakeLists文件会更改为尝试设置不同的编译器...并且因为根据运行CMake的开发人员的偏好,CMakeLists文件应该与多个编译器一起使用。

最好的方法是在构建树中第一次调用CMake之前设置环境变量CCCXX

在CMake检测到要使用的编译器之后,它会将它们保存在CMakeCache.txt文件中,这样即使这些变量从环境中消失,它仍然可以生成正确的构建系统......

如果您需要更改编译器,则需要从新的构建树开始。

答案 1 :(得分:4)

我和Pietro有类似的问题,

我在Window 10上使用“Git Bash”。 我尝试执行>> cmake -G“MinGW Makefiles”,但我得到了与Pietro相同的错误。

然后,我尝试了>> cmake -G“MSYS Makefiles”,但意识到我需要正确设置我的环境。

确保设置C:\ MinGW \ msys \ 1.0 \ bin的路径,并检查是否有gcc.exe。如果没有gcc.exe那么你必须运行C:/MinGW/bin/mingw-get.exe并从MSYS安装gcc。

之后它适用于我

答案 2 :(得分:1)

使用import subprocess print subprocess.check_output(['ls','-lah']) 选项可能有效:

FILEPATH

答案 3 :(得分:0)

我有同样的问题。在我的情况下,修复非常简单。诀窍是简单地添加" .exe"到您的编译器路径。所以,而不是:

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)

应该是

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc.exe)

同样适用于g ++。