CMake无法找到Visual C++编译器

141
安装了Visual Studio 2015并在之前的项目上运行CMake后,CMake报错无法找到C编译器。
The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

我在Visual Studio文件夹中查找cl.exe,即C:\Program Files\Microsoft Visual Studio 14.0,但未能找到。

如何在Windows上使用Visual Studio 2015设置CMake工具?


1
也许2015的安装路径不是CMake所期望的?您使用的CMake版本是哪个?此外,我不清楚Windows版本的CMake,但可能CMake会在PATH中查找所需的程序,因此如果未更新,则无法找到编译器。 - Some programmer dude
1
我正在使用 cmake 3.2.3 版本,它声称支持 Visual Studio 2015。 - Asher
1
使用版本3.2.x,在安装VS2015之前,我遇到了安装Cmake时的问题,因此重新安装Cmake解决了我的问题。 - Andiana
有时候你可能会忘记重启电脑,或者在安装或更新Visual Studio后不想重启。这种情况下,CMake就无法找到你的编译器。 - Noki
在 VS 2022 中遇到了这个问题。找到了这个解决方案。更改注册表 HKLM\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot10 解决了它。 - Henry Fung
31个回答

1
我曾经遇到过与通过CMake生成的Visual Studio 2017项目类似的问题。在使用C++桌面开发安装Visual Studio时,一些软件包丢失了。请参见快照:
Visual Studio 2017软件包:

Visual Studio2017 Packages

同时,将CMake升级到最新版本。


1

在CMakeFiles中检查CMakeErrors.log返回:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Platforms\x64\PlatformToolsets\v140_xp\Toolset.targets(36,5): 警告 MSB8003:无法从注册表中找到WindowsSdkDir_71A变量。 TargetFrameworkVersion或PlatformToolset可能设置为无效版本号。

这个错误意味着未安装XP(v140_xp)的构建工具。要解决此问题,我在Visual Studio 2019安装程序的“Individual Components”选项卡下安装了正确的功能。

enter image description here


1
如果您使用的是Visual Studio 2017,您需要至少CMake 3.8!

1

我之前用的是旧版cmake(即3.8版本),现在使用的是Visual Studio 16-2019,更新完cmake后,它成功检测到了编译器。


0

检查文件夹名称是否过长


0

我在使用CMake 3.12.1时遇到了问题,这是在更新Visual Studio 2017之后发生的。我只需重新运行CMake即可解决问题。


0
一些提示:
  • 尝试手动设置路径,勾选“高级”并修改CMAKE_LINKER和CMAKE_MAKE_PROGRAM
  • 删除缓存 - 在带有GUI的CMake中转到: 文件→删除缓存。

我的问题是之前提到的组合:我将编译器版本设置为15而不是14,当进行更正时,我必须删除缓存。

我还以管理员身份启动了Visual Studio命令提示符,并从那里运行了cmake-gui.exe

然后一切都按照预期工作。


0

我在StackOverflow上找到了这个解决方案,虽然其他解决方案不起作用,但它对我有效。

如果您使用的是Windows 10操作系统,则执行以下步骤即可解决问题:

1)前往C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Bin

2)然后从该文件中复制RC.exe和RcDll

3)前往C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ bin,并将您复制的两个文件粘贴到其中。

就这样,希望对您有所帮助...


0

我有一个相关问题:在运行 cmake --help 时,Visual C++生成器甚至不在列表中。

我在控制台中运行了 where cmake 并发现cygwin也提供了自己的cmake.exe文件,而它正在被使用。 改变PATH中目录的顺序解决了这个问题。


0

之前的解决方案都对我没用。但是我注意到,尽管我安装了 Visual Studio 版本 15(不要与 Visual Studio 2015 混淆),但在我的计算机上创建的目录是 Visual Studio 14。

当我在按配置按钮时指定了 Visual Studio 14,它就起作用了。


Visual Studio 的版本编号有些奇怪。实际上,Visual Studio 14 就是 Visual Studio 2015,而没有 Visual Studio 2014。请参见 trophygeek 的回答 https://dev59.com/z1wZ5IYBdhLWcg3wTOvr#40332976 - kutschkem

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