提问人:Pietro 提问时间:10/25/2012 最后编辑:jwwPietro 更新时间:9/5/2019 访问量:136937
无法使用 CMake 指定编译器
Unable to specify the compiler with CMake
问:
我对此文件有疑问: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: 失败,并显示以下输出:cmake -G "MinGW Makefiles"
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/
有什么想法吗?
平台:
- 视窗 7
- MinGW/GCC 4.6
答:
切勿尝试在文件中设置编译器。CMakeLists.txt
有关如何使用其他编译器的信息,请参阅 CMake 常见问题解答:
https://gitlab.kitware.com/cmake/community/wikis/FAQ#how-do-i-use-a-different-compiler
(请注意,您正在尝试方法#3,并且FAQ说“(避免)”...
我们建议避免使用“在 CMakeLists 中”技术,因为当使用不同的编译器进行第一次配置时,它会出现问题,然后 CMakeLists 文件更改以尝试设置不同的编译器......而且,因为 CMakeLists 文件的意图应该是根据运行 CMake 的开发人员的偏好使用多个编译器。
最好的方法是在构建树中首次调用 CMake 之前设置环境变量。CC
CXX
在 CMake 检测到要使用的编译器后,它会将它们保存在文件中,这样即使这些变量从环境中消失,它仍然可以生成正确的构建系统......CMakeCache.txt
如果需要更改编译器,则需要从新的构建树开始。
评论
我和 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。
在那之后,它对我来说效果很好
评论
我有同样的问题。就我而言,修复非常简单。诀窍是简单地将“.exe”添加到编译器路径中。所以,而不是:
SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)
它应该是
SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc.exe)
这同样适用于 g++。
使用 with 选项可能会起作用:FILEPATH
set(CMAKE_CXX_COMPILER:FILEPATH C:/MinGW/bin/gcc.exe)
上一个:固定大小的浮点类型
评论
C:\MinGW\bin\g++