CMake 在Visual Studio – Visual Studio 2017 RC 更新中被支持了

[原文发表地址]CMake 在Visual Studio – Visual Studio 2017 RC 更新中被支持了

[原文发表时间] 2016/11/16

Visual Studio 2017 RC是一个很重要的发布版本,因为它开始支持CMake了。“Tools for CMake” VS 组件已经发布在预览版中了。我们也想邀请所有人把您的CMake项目导入到VS中来工作并且可以给我们反馈用户体验。

关于Visual Studio CMake体验的一些概述,在Visual Studio 开始支持CMake 的公告中已经对所有功能的讨论进行了更新。另外,如果您对不使用CMake或MSBuild的C++项目中的“Open Folder”比较感兴趣,您可以查看C++中打开文件夹的公告这篇博客。

RC版本支持如下:

  • 编辑CMake项目
  • 配置CMake项目
  • 建立并调试CMake目标文件

编辑CMake项目

CMake默认配置。 只要您打开一个包含CMake项目的文件夹,解决方案资源管理器窗口将会列出文件夹中的所有文件,您可以在编辑窗口打开这些文件中的任意一个。在后台,VS将会开始检索您文件夹中的所有C++文件。VS也会开始运行CMake.exe来收集更多的关于您的CMake项目的信息(CMake cache也会在这个过程中生成)。CMake会生成一系列特殊的转换,这些转换作为VS生成“Visual Studio 15 X86“ 名下的CMake默认配置的一部分。 1

CMake配置转换。 您可以在工具一栏中的C++配置下拉菜单中转换CMake的配置。如果一个配置对CMake来说缺少必要的信息而不能准确地生成cache,您可以参考这篇博客后面的—如何配置CMake来进一步自定义它。 2

自动更新CMake cache。 如果您对CMakeLists.txt文件做了改变或是转换了配置,CMake生成cache的步骤将会自动再次运行。您可以在CMake输出栏的输出窗口中追踪这一过程。 3

当生成步骤完成后,编辑窗口中的通知条将会消失,Startup Item下拉菜单中也会包括已更新的CMake目标文件清单,C++智能感应也会根据您对文件最新一次的改变来逐渐进行更新(例如,增加文件或是改变编译转换等等)。 4

配置CMake项目

通过CMakeSettings.json来配置CMake。 如果您的CMake项目需要额外的设置来正确地配置CMake cache,您可以首先在根目录有CMakeLists.txt的相同文件夹中创建一个CMakeSettings.json文件,然后通过这个CMakeSettings.json文件来自定义一些设置。在这个文件中您可以配置您所需要的任何关于CMake的配置—您也可以随时在这些配置中进行转换。

通过点击Project->Edit Setting->path-to- CmakeLists(配置名字) 来创建一个CMakeSettings.json文件。

CMakeSettings.json 示例

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 {   "configurations": [    {     "name": "my-config",     "generator": "Visual Studio 15 2017",     "buildRoot": "${env.LOCALAPPDATA}\\CMakeBuild\\${workspaceHash}\\build\\${name}",     "cmakeCommandArgs": "",     "variables": [      {       "name": "VARIABLE",       "value": "value"      }     ]   }  ] }

 

如果您已经使CMake.exe文件在命令行工作了,在CMakeSettings.json文件中创建新的CMake配置应该是比较简单的:

1.name: 这个是配置的名称,它将会出现在C++配置下拉菜单中。这个特征值也可以被用作宏${name} 来指定其他的特征值,比如可以看看“buildRoot”的定义。

2.generator: 映射到-G switch并且指定要使用的生成器。这个特征也可以作为宏${generator} 被使用来帮助指定其他的特征值。现阶段VS支持下列的CMake生成器:

  • “Visual Studio 14 2015”
  • “Visual Studio 14 2015 ARM”
  • “Visual Studio 14 2015 Win64”
  • “Visual Studio 15 2017”
  • “Visual Studio 15 2017 ARM”
  • “Visual Studio 15 2017 Win64”

3.buildRoot: 映射到 -DCMAKE_BINARY_DIR switch 这里并且指定 CMake cache 将会在哪里生成。如果文件夹不存在,它将会被创建。

4. variable: CMake变量包含一对名称+值,它将通过 -Dname=value传递给cmake。如果您的CMake项目创建命令指定直接在CMake cache文件中添加一些变量,建议您将其添加在这里。

5.cmakeCommandArgs: 指定任何您想传递给 Cmake.exe的添加的转换。

CMakeSettings.json文件智能感应。 当您安装了JSON编辑器(它来自于Web Development Workload),如果CMakeSettings.json文件发生了改变,JSON的智能感应将会帮助您。 6

环境变量的支持和宏指令: CMakeSettings.json支持对任意一种配置特性使用环境变量。使用语法${env.FOO} 来扩展环境变量%FOO%。

您还可以在这个文件中访问内置宏:

  • ${workspaceRoot}- 提供工作空间文件夹的全部路径
  • ${workspaceRoot}- 哈希工作空间路径;对当前的工作空间创建一个唯一的标识符是非常有用的(例如在文件夹路径中使用)
  • ${projectFile}- CMakeLists.txt根目录的完整路径
  • ${projectDir}- CMakeLists.txt根目录文件夹的完整路径
  • ${thisFile}-CMakeLists.txt文件的完整路径
  • ${name}-配置的名称
  • ${generator}-此配置中使用CMake 生成器的名称

生成和调试CMake项目

自定义生成命令。 默认情况下,VS在下面的改变中将会激活MSbuild: -m –v:minimal。您可以通过改变CMakeSettings.json中的”buildCommandArgs“配置属性来自定义这个命令。

CMakeSettings.json

1 2 3 4 5 6 7 8 9 10 11 {   "configurations": [    {      "name": "x86",      "generator": "Visual Studio 15 2017",      "buildRoot": "${env.LOCALAPPDATA}\\CMakeBuild\\${workspaceHash}\\build\\${name}",      "cmakeCommandArgs": "",      "buildCommandArgs": "-m:8 -v:minimal -p:PreferredToolArchitecture=x64"    }  ] }

 

行动呼吁

现在就下载Visual Studio 2017RC并尝试CMake 项目的“Open Folder”体验。关于CMake体验的概览,可以查看Visual Studio中支持CMake的博客文章。

如果您在开发C++项目的同时使用CMake ,我们很高兴听一些您的用后体验!请通过下面的评论区或通过VS中“send feedback” 图标分享您的反馈。