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.0
searchcl.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和安装。 请参阅下面的截图。
作为接受的答案的替代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:
菜单 – > 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提取; 你可能会或可能没有发电机