Windows 上的 CMake
问题描述
我正在尝试在 Windows 上运行 CMake,但出现以下错误:
I am trying to run CMake on Windows, and I get the following error:
但是我设置了CC"环境变量!
However my "CC" environment variable is set!
推荐答案
因为 CMake 的错误信息在这里具有误导性,我认为它值得更详细的答案.
Because CMake's error message is misleading here, I think it warrants a little more detailed answer.
简而言之,您遇到了鸡与蛋类型的问题.
In short, you ran into a chicken-and-egg kind of a problem.
CMake 的编译器检测是强大的,但是因为 - 在第一次尝试期间 -
CMake's compiler detection is mighty, but since - during the first try -
- 您没有提供任何显式生成器 与
-G
一起使用 - 找不到安装的 Visual Studio
- 在您的
PATH
环境中找不到任何 C/C++ 编译器 - 找不到用编译器的完整路径定义的
CC
环境变量
- you didn't give any explicit generator to use with
-G
- it couldn't find a Visual Studio installed
- it couldn't find any C/C++ compiler in your
PATH
environment - it couldn't find a
CC
environment variable defined with the full path to a compiler
默认为nmake
.
现在问题来了:它确实记住了您在其变量缓存中的隐式生成器/编译器选择(请参阅CMakeCache.txt
中的CMAKE_GENERATOR
).如果您安装了多个编译器,这是一个非常有用的功能.
Now here comes the problem: it does remember your implicit generator/compiler choice in it's variable cache (see CMAKE_GENERATOR
in CMakeCache.txt
). What is a very useful feature, if you have multiple compilers installed.
但是如果您随后声明了 CC
环境变量 - 正如错误消息所暗示的那样 - 为时已晚,因为您的生成器的选择在第一次尝试时就被记住了.
But if you then declare the CC
environment variable - as the error message suggests - it's too late since your generator's choice was remembered in the first try.
我看到了两种可能的方法:
I see two possible ways out of this:
- 通过使用
cmake.exe -G "MinGW Makefiles" ..
给出正确的选项来否决生成器的选择(正如@Guillaume 所建议的答案所暗示的那样) - 删除您项目的二进制输出目录(包括
CMakeCache.txt
)并在添加编译器的bin
文件夹后执行cmake.exe ..
到您的PATH
环境.
- Overrule the generator choice by given the right one with
cmake.exe -G "MinGW Makefiles" ..
(as the answer linked by @Guillaume suggests) - Delete your project's binary output directory (including
CMakeCache.txt
) and docmake.exe ..
after you added your compiler'sbin
folder to yourPATH
environment.
参考资料
- 在 Windows 上运行 CMake
- CMake 中的默认生成器是什么窗户?
- CMakeLists.txt:30 (project) 中的 CMake 错误:找不到 CMAKE_C_COMPILER
- CMake:如何指定要使用的 Visual C++ 版本?
这篇关于Windows 上的 CMake的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!