remoteCopyOptimizations选项的可选参数有:RsyncAndSftp(默认值),RsyncOnly和None(这个参数表示总是执行嵌套式完全拷贝)。选项rsyncSingleDirectoryCommandArgs主要是在非嵌套式拷贝时来自定义同步的行为。除此之外,还有remoteCopySources,rsyncCommandArgs(用来定义嵌套式拷贝的行为),另外,rsyncCopySourcesMethod也同样可以定义文件拷贝行为,对于这些参数的具体使用方法,请参考CMake Linux工程的”更多设置”里的帮助文档。
请注意,这些性能优化主要是针对远程连接。对于WSL,可以通过VS对WSL的支持来直接访问Windows文件系统中的源文件,而不需要任何的拷贝和维护工作。
Native WSL support with the separation of build and deploy
VS2019 v16.1中引入了一种新的机制,来将远程编译系统从远程部署系统中隔离出来。在VS2019 v16.5中,这个特性被扩展到了WSL的支持范畴。也就是说,现在你可以在WSL中进行本机编译,然后使用SSH在另外一台远程Linux系统上进行部署或调试。
Separation of build and deploy with CMake projects
在CMake配置编辑器中我们指定了用于编译的Linux系统。如果要在WSL上进行本机编译,则可以导航到CMake配置编辑器(Configuration下拉菜单 > Manage Configurations),然后添加一个新的WSL配置。你可以根据你想使用的工具集来自由选择WSL-GCC-Debug或者WSL-Clang-Debug。
在配置文件launch.vs.json中可以指定用于调试的远程Linux系统。为了在另一台远程Linux系统上进行调试,可以向这个配置文件中添加一个新的远程Linux配置,然后选择[C/C++ Attach for Linux (gdb)]。如需要了解更多关于自定义配置和编译部署隔离相关的知识,请查看[launch.vs.json reference for remote Linux projects]这个帮助文档。
请注意,[C/C++ Attach for Linux (gdb)]配置是用来调试远程Linux系统的。如果你希望在同一个WSL实例上编译和调试应用程序,可以在launch.vs.json中添加一个新的[C/C++ Launch for WSL]配置项,具体可以参考[entry points to launch.vs.json]这篇文章。
Separation of build and deploy with MSBuild-based Linux projects
在Linux工程属性页面中,我们可以指定用于编译的Linux系统。如果需要在WSL进行本机编译,则可以在工程配置的[常规]中选择不同的平台工具集。根据希望使用的工具集,可以选择[GCC for Windows Subsystem for Linux]或者[Clang for Windows Subsystem for Linux]。
默认情况下,Visual Studio是在WSL中进行编译和调试。如果希望指定在另一台远程系统中进行调试,可以导航至配置属性页面的[Debugging]页面,然后设置[Remote Debug Machine]到一个指定的远程连接。你可以通过连接管理器添加新的远程连接,也可以通过[Remote Deploy Directory]来指定远程系统上用于部署的目录路径。
Easily add, remove, and rename files in CMake projects
在新版本的Visual Studio中,和CMake工程打交道变得更加的简单了。现在,你可以在IDE中直接对CMake工程中的源文件进行添加,删除和重命名操作,而不需要手动的修改CMake脚本。当你再Solution Explorer中添加或删除文件时,Visual Studio将自动为你修改CMake工程脚本。你也可以在Solution Explorer的目标视图中随时修改工程的编译目标。
[attach]38171[/attach]
在Visual Studio 2019 v15.5 Preview 2中,这个特性默认被启用,但是你可以随时关闭它:[Tools > Options > CMake, “Enable automatic CMake script modification…]。
CMake language services
另外,在新版本的Visual Studio中可以更加简单的支持复杂CMake工程的开发。类似[Go To Definition]和[Find All References]这样的功能现在已经可以支持CMake工程脚本中的变量,函数和目标了。
这些代码导航功能可以应用在整个CMake工程范围,它们提升了开发人员的生产力,因为开发人员不再需要在一大堆文件和文件夹中进行文本搜索,同时,这些功能也整合了其他IDE生产力特性,例如[Peek Definition]。关于CMake工程的其他更多信息,敬请期待后面的文章。
Command line utility to interact with the Connection Manager
在Visual Studio 2019 v16.5及其更新版本中,你可以使用命令行工具来以编程的方式来添加或删除远程连接。这个功能对于创建一个新的开发环境或者在持续集成环境中设置Visual Studio时非常有用。关于这个命令行工具的使用方法和参数介绍,请参考文档。
FIPS 140-2 compliance for remote C++ development
Federal Information Processing Standard (FIPS) 140-2版是美国政府为数据加密提出来的一项标准。关于这标准的实现的验证,是由NIST负责执行的。从Visual Studio v16.5开始,使用C++来面向远程Linux系统做开发已经符合FIPS 140-2标准。关于这一特性的更多信息,可以参考[step-by-step instructions to set up a secure, FIPS-compliant connection between Visual Studio and your remote Linux system]这篇文章。
IntelliSense improvements
IntelliSense在新版本中也得到了强化,在和标准库打交道时,它可以显示更加具有可读性的类型名称,举个例子,在[Quick Info]提示中,原本的提示内容std::_vector_iterator变为了_std::vector::iterator。
另外,我们也对回车,空格和Tab按键的快捷响应。当你在一个CMake或者MSBuild工程中工作时,你可以在[Tools > Options > Text Editor > C/C++ > Advanced > IntelliSense]中找到有关这些按键的设置项,如下图所示:
[attach]38173[/attach]