CMake没有findVisual C ++编译器

在安装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文件夹C:\Program Files\Microsoft Visual Studio 14.0searchcl.exe ,并找不到它。
如何设置CMake以使用Visual Studio 2015在Windows上工作?

我find了解决办法。 虽然Visual Studio IDE安装成功,但没有安装任何构build工具,因此也没有安装C ++编译器。 通过尝试在Visual Studio 2015 GUI中手动创build一个C ++项目,我能够提示它下载C ++包。 Cmake随后能够毫无困难地find编译器。

这是为我工作的解决scheme:
1.打开VS studio命令提示工具(以pipe理员身份)
2.导航到您拥有Cmake可执行文件的位置
3.运行Cmake.exe
4.像往常一样继续select生成和源文件夹
5.select合适的VS编译器并点击configurationbutton

有希望它应该运行没有问题。 祝你好运

确保在生成器中使用正确版本的Visual Studio。 当Visual Studio 14安装时,我错误地select了Visual Studio 15。

我查看了CMakeError.log文件,发现一个关于cannot run 'rc.exe'的错误

我search并find了这个答案 ,将RC.Exe和RcDll.Dll从Microsoft SDKs bin复制到VC bin,然后CMake工作。


编辑: 另一个问题的最佳答案表明,这是一个PATH问题,所以它可能足以确保Microsoft SDK bin在您的PATH。

如果以上解决scheme都不起作用,那么停下来做一个完整的检查。

我被烧坏了使用错误的-G <config>string,它给了我这个误导性的错误。

首先,从VS命令提示符运行而不是常规命令提示符。 你可以在Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015它设置VS工具等的所有正确path。

现在看看哪些发电机可用cmake …

cmake -help

...<snip>... The following generators are available on this platform: Visual Studio 15 [arch] = Generates Visual Studio 15 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. Optional [arch] can be "Win64" or "IA64". ...

然后select添加了[arch]的适当的string。

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

在一个子目录中运行cmake可以让你更容易的做一个'clean',因为你可以删除那个目录下的所有东西。

我升级到Visual Studio 15,但没有关注,并试图产生2012年。

对我来说,我检查了CMakeError.log文件,发现:

[…]错误MSB8036:找不到Windows SDK版本8.1。 安装所需的Windows SDK版本,或在项目属性页面中更改SDK版本,或右键单击解决scheme并select“redirect解决scheme”。

尽pipe在Windows 7上使用了Visual Studio 2017,所以看起来cmake正在尝试使用Windows 8.1 SDK构build它的检测项目。

我使用Visual Studio安装程序添加该组件,现在cmake很高兴成为一个蛤。

那些在Visual Studio 2017中遇到了这个问题:有一个与CMake相关的特性需要与相关的编译器工具集一起select和安装。 请参阅下面的截图。

必须安装CMake的Visaul C ++工具

作为接受的答案的替代scheme,您可以按照此处所述直接安装C ++。

我遇到了同样的问题,并通过重新启动Visual Studio安装并检查以下选项来修复它:

Windows and Web Development / Universal Windows App Development Tools / Windows 10 SDK

它包含在大多数应用程序中使用的标准C ++头文件,因此通常也需要安装它。

在我的情况下,我可以看到在CMakeError.log CMake无法findWindowsSDK( MSB8003: Could not find WindowsSDKDir variable from the registry )。

该版本可以在第一个cmake运行的命令行上指定,使用:

 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION= 

设置后,我得到了进一步的,但后来碰到更多的问题(所以我认为我的环境搞砸了),但也许这将有助于这个问题的人。

由于Cmake无法find您的Visual Studio编译器,请启动任何将下载所需编译器的项目,然后Cmake必须能够find它。

一些技巧:

– 尝试手动设置path,通过检查“高级”和修改CMAKE_LINKER和CMAKE_MAKE_PROGRAM – 删除caching – 在与CMake CMake去:文件 – >删除caching。

我的问题是前面所说的组合:我已经将编译器版本设置为15而不是14,并且在更正时,我必须删除caching。

我也以pipe理员身份启动了VS命令提示符,并从那里运行了cmake-gui.exe

然后一切都按照原来的方式工作。

在我的情况下,问题是,父项目,其中包括googletest通过add_subdirectory(gtest_dir)被定义为PROJECT( projname CXX ) ,cmake不能识别PROJECT(sub_project_name CXX C)因为C编译器没有设置在家长。 我通过在我的主要CMakeLists.txt中使用PROJECT( projname CXX C)解决了这个问题

在我的情况下,有一个环境variables集是这个错误的原因。 从环境variables中删除cxx_flags后,问题就解决了。

如果你使用Visual Studio 2017,至less需要CMake 3.8!

对于那些最新的Windows 10创build者版本,这可能是另一种解决scheme:

https://stackoverflow.com/a/43456623/5925642

菜单 – > Visual Studio 2015 – > VS2015的MSBuild命令提示符然后cmake可以findcl.exe

设置PATH =“c:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.16299.0 \ x64 \”;%PATH%将上面的path更改为您的Windows sdk安装位置

cmake可以findrc.exe

cd到cmakelist.txt的path

 md .build cd .build cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release cmake --build . 

-G之后的参数应该由cmake –help提取; 你可能会或可能没有发电机