昨天我安装了Visual Studio 2017。我还安装了支持VS 2017的CMake 3.7.2。
我的VS安装是使用“使用C++进行游戏开发”工作流+其他一些组件:
我还添加了CMake(但我甚至不认为我需要它 - 因为我正在使用CMake作为独立工具来生成VS解决方案)和MSBuild(在添加该组件之前我已经有msbuild.exe了,所以不确定该额外组件究竟是做什么的)。
使用VS 2015,我只需从普通命令提示符中运行cmake .
就可以为解决方案生成内容。
在VS 2017中,工作流程会发生变化 - 我阅读了Microsoft的这篇文章。
因此,我尝试了以下操作:
- 我打开了“用于VS 2017的开发人员命令提示符”,并从中运行了
cmake . -G“NMake Makefiles”
。然后运行cmake --build .
可以正确地编译所有内容。 当我在提示符中尝试运行以下命令时:
cmake . -G“Visual Studio 15 2017 Win64”
,以强制创建解决方案时,我收到了以下错误:-- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake Error at CMakeLists.txt:3 (project): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:3 (project): No CMAKE_CXX_COMPILER could be found. -- Configuring incomplete, errors occurred!
我还尝试使用vswhere.exe设置环境并像这样运行vcvarsall.bat
:
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
但是我只能生成NMake文件,而不是解决方案。
那么怎么才能得到一个解决方案呢?
为什么cl.exe
在VC\Tools\MSVC\14.10.25017\bin
中时报告的版本是Version 19.10.25017
?
cl.exe
报告编译器版本。它所在的目录是整个编译器版本。请注意,与 VS15 捆绑的 CMake 被 VS 团队修改,并基于 CMake 3.6,据我所知,它不被支持为官方 CMake 版本。我建议您暂时坚持使用正常的 CMake 3.8,它可以正常地与 VS15 协作,并生成适当的解决方案文件。此外,请注意 VS15 中的此错误。 - tambrecmake --version
显示3.7.2
,这是最新的官方版本(3.8是RC),这是我从VS中单独安装的版本。但现在我会尝试使用3.8。 - onqtamNMake
切换到Visual Studio
生成器(这是行不通的)。你可以尝试在其中创建一个新的“build”子目录,并从那里运行“cmake ..”(从头开始启动生成过程)吗?或者你可以使用脚本自动化这个过程。 - Florian