Visual Studio 2017 支持CMake了— 在RC.2版本中关于CMake的更新

[原文发表地址]  CMake support in Visual Studio 2017 – what’s new in the RC.2 update

[原文发表时间] 2016/12/20

为了防止您错过Visual Studio的最新动态,您可以查看Visual Studio 2017 RC的最新可用版本。您可以在已经安装的Visual Studio上直接更新到RC版本,或者您也可以从Visual Studio 2017 RC下载页面直接安装。这次的发布版本在Visual Studio’s CMake部分做出了一些改善,可以进一步简化C++项目的开发体验。

如果您才刚刚开始在Visual Studio上使用CMake,Visual Studio开始支持CMake这篇博客是比较好的资料,这篇博客可以让您对在Visual Studio上CMake的功能有更加充分的了解,同时包括在本篇博客中提及的功能的最新更新。另外,如果您对不使用CMake 和MSbuild的C++代码库的“Open Folder”这个功能比较感兴趣,可以查阅the Open Folder for C++ 这篇博客。

这次更新的RC版本增加了下列这些功能:

打开多个CMake项目

现在您可以打开有任意多数目的CMake项目的文件夹。Visual Studio将会在您的工作空间里检测出所有“root”里的CMakeLists.txt文件,然后再恰当地配置它们。在您的工作空间里所有CMake项目的CMake操作(配置,生成,调试)以及C++智能感应和浏览都是可用的。 cmake-rc2-multipleroots

如果多个CMake项目使用相同的CMake配置名称,当特定的配置被选择的时候,这些有相同名称的项目都可以被配置并创建(在它们自己的CMake项目中独立生成根文件夹)。当然您也可以调试来自于CMake配置文件中配置的所有CMake项目的目标文件。 cmake-rc2-configurationdropdown cmake-rc2-buildprojects

如果您喜欢独立的项目,您仍然可以(通过CMakeSettings.json 文件)对特定的CMakeLists.txt设置单独的CMake配置。如果这样设置的话,当这个特定配置被选择的时候,只有特定的CMake项目是可以生成并调试的,同时基于CMake的C++智能感应也仅仅对它的源文件起作用。

编辑CMake项目

CMakeLists.txt和 *.cmake文件语法的彩色化显示。 当打开一个CMake项目时,编辑器将会提供基础的语法彩色化显示和基于代码编辑的智能感应。 cmake-rc2-syntaxcolorization

在错误列表和输出窗口中改善了CMake的警告和错误显示。 CMake的错误和警告现在都聚集在错误列表窗口中,在错误列表窗口或输出窗口中双击任意一个错误或警告将会打开相应的CMake文件并定位到错误行或警告行。 cmake-rc2-errorlist

配置CMake

取消CMake生成cache。 当您打开一个包含CMake项目的文件夹或在CMakeLists.txt文件中做一些改变并保存后,配置都将会自动生成Cache。如果因为某些原因您不希望它成功运行,您可以点击编辑器上面的黄色消息条中的“Cancel”或者右键点击根目录的CMakeLists.txt然后选择“Cancel Cache Generation”来取消这一操作的进行。 cmake-rc2-cancel-editorbar

默认的CMake配置已经被更新了。 默认情况下,VS提供了一个CMake配置的预设列表来定义用于运行CMake.exe文件生成CMake cache的设置。从这次发布版本开始,预设列表的配置有“x86-Debug”,“x86-Release”, “x64-Debug” and “x64-Release”。请注意如果您已经自己创建了CMakeSettings.json 文件,将不会受这种改变的影响。

CMake配置现在可以指定配置的类型(例如 Debug, Release)。 作为CMakeSettings.json内设置定义的一部分,您可以指定自己想要生成的配置类型(Debug, MinSizeRel, Release, RelWithDebInfo)。这个设置也可以通过C++智能感应来反映。

CMakeSettings.json 例子:
cmake-rc2-configurationtype

所有的CMake相关操作现在都被集中在主菜单的“CMake”选项下。 现在您可以在主菜单上一个命名为“CMake”的选项下更轻松地获得您工作空间中所有CMakeLists.txt文件的关于CMake 的大部分操作。 cmake-rc2-cmake-mainmenu

使用 “Change CMake Settings”命令来创建或编辑CMakeSettings.json文件。 当您不管是从主菜单或是CMakeLists.txt文件的右键菜单中激活“Change CMake Settings”时,对应于被选择的CMakeLists.txt的CMakeSettings.json将会在编辑器中被打开。如果这个文件不存在,它将会被创建并和CMakeLists.txt保存在同一目录下。

现在更多的CMake cache操作可以使用。 不管是在主菜单或是在CMakeLists.txt文件的右键菜单中,都有下列的操作对CMake cache是可用的:

  • Generate Cache: 强制重新运行生成步骤即使VS认为环境设置已经是最新的了。
  • Clean Cache: 为了不影响的下一次配置运行,删除生成的根文件夹。
  • View Cache: 从生成的根路径打开CMakeCache.txt文件。您可以编辑并保存文件,但是我建议使用CMakeSettings.json文件直接更改在cache中(因为当您清除cache后任何在CMakeCache.txt文件中的修改也会被清除)。
  • Open Cache Folder: 打开资源管理窗口来生成根文件夹。

生成和调试CMake的目标文件

生成单个的CMake目标文件。 VS现在除了可以build所有的文件也允许选择任何您想要生成的目标文件。 cmake-rc2-buildtarget

CMake安装。 安装最终文件的选择基于CMakeLists.txt文件里的规则,CMakeLists.txt文件现在可以被用作一个独立的命令使用。

对单独的CMake目标文件进行调试。 现在您可以对自己项目中的任何可执行的CMake目标文件来自定义调试设置。当在CMakeLists.txt的右键菜单下选择 “Debug and Launch Settings”, 然后再选择一个特定的目标文件,一个launch.vs.json文件将会被生成,这个文件包含有您所选择的目标文件的信息并允许您指定其他的参数,例如arguments 或 debugger的类型。 cmake-rc2-debugsettings

Launch.vs.json:

 {
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "tests\\hellotest",
      "name": "tests\\hellotest with args",
      "args": ["argument after argument"]
    }
  ]
}

当您一旦保存了launch.vs.json文件,在Debug Target 的下拉菜单中将会出现一个有新名称的条目。通过编辑launch.vs.json文件,您可以对任意多数量的CMake目标文件创建您想要的任意调试配置。 cmake-rc2-debugtarget

下一步计划

现在就下载Visual Studio 2017 RC.2,试着在VS中使用您喜欢的CMake文件并分享您的用后体验。对于好的或不好的反馈我们都想要知道,同时我们也对您如何看待这个体验在即将到来的Visual Studio 2017 RTM版本中的推进感兴趣。 

我们希望您可以喜欢这些更新并期待您的反馈。