如何在Visual Studio 2017中使用已安装CMake而非内嵌版本
解决Visual Studio 2017内嵌CMake版本与Boost 1.66.0冲突的问题
这问题我碰到过好几次了——核心原因就是VS2017默认用的是自带的旧版CMake,版本大概率低于3.11.0 rc2,而你的Boost 1.66.0明确要求CMake 3.11.0 rc2及以上,所以命令行用自己装的高版本能跑,VS里用内嵌的就炸了。给你几个靠谱的解决办法:
第一步:确认VS当前使用的CMake版本
你可以在VS的输出面板里找到CMake命令的路径,看是不是指向C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO...下的内嵌版本,也可以通过工具 -> 选项 -> CMake -> 常规查看当前的CMake可执行文件路径。第二步:切换VS到你本地安装的CMake 3.11.0 rc2
- 打开VS2017,加载你的CMake项目
- 点击顶部菜单栏的工具 -> 选项
- 在左侧导航栏展开CMake,选择常规
- 在右侧的“CMake executable”下拉框里,选择“浏览”,找到你本地安装的CMake路径(比如
C:\Program Files\CMake\bin\cmake.exe) - 点击“确定”保存设置
第三步:验证并重新构建
右键点击解决方案资源管理器里的CMakeLists.txt,选择重新加载CMake项目,然后看输出面板里的CMake命令路径是不是已经变成你指定的本地版本了,之后再构建项目应该就能正常运行了。进阶技巧:通过CMakeSettings.json永久配置
如果不想每次新建项目都改设置,可以直接修改项目根目录的CMakeSettings.json文件,在对应的配置项里添加cmakeExecutable字段,指定你的本地CMake路径,示例如下:
{ "configurations": [ { "name": "Debug", "generator": "Ninja", "configurationType": "Debug", "cmakeExecutable": "C:/Program Files/CMake/bin/cmake.exe", "buildRoot": "${projectDir}\\out\\build\\${name}", "installRoot": "${projectDir}\\out\\install\\${name}", "cmakeCommandArgs": "", "buildCommandArgs": "", "ctestCommandArgs": "" } ] }
简单说就是让VS放弃自带的旧CMake,改用你已经验证过的、符合Boost要求的版本,问题就能解决啦。
内容的提问来源于stack exchange,提问作者Jepessen
相关产品推荐
相关产品推荐

