VisualStudio2019版本16.5预览版2中的CMake、Linux目标和IntelliSense改进

Visual Studio的 对CMake的本机支持 允许您在单个IDE中轻松地以Windows和Linux为目标。 Visual Studio 2019版本16.5预览版2 介绍了跨平台开发特有的几个新功能,包括:

null

针对远程Linux系统的CMake项目的文件拷贝优化

在Linux上构建和调试时,VisualStudio会自动将源文件从本地Windows计算机复制到远程Linux系统。在VisualStudio2019版本16.5中,此行为已优化。visualstudio现在保存了远程复制的最后一组源的“指纹文件”,并根据已更改的文件数优化行为。

  1. 如果未识别出任何更改,则不会发生复制。
  2. 如果只有少数文件发生了更改,则使用sftp分别复制这些文件。
  3. 如果只有少数目录发生了更改,则会发出非递归rsync命令来复制这些目录。
  4. 否则,将从更改文件的第一个公共父目录调用rsync递归副本。

对这些改进进行了测试 LLVM公司 . 对源文件做了一个很小的更改,这会导致在用户开始调试时调用远程源文件副本并重建可执行文件。

在没有优化的情况下调试LLVM objdump 使用16.5优化调试LLVM objdump
远程源文件复制所用的时间 3分24秒 2秒

在没有优化的情况下,将从CMake根目录执行一个完整的递归rsync副本。通过这些优化,VisualStudio检测到单个文件已更改,并使用sftp仅重新复制已更改的文件。

默认情况下启用这些优化。可以将以下新选项添加到CMakeSettings.json以自定义文件复制行为。

“remoteCopyOptimizations”:{

“remoteCopyUseOptmizations”:“RsyncAndSftp”

“rsyncSingleDirectoryCommandArgs”:“-t”

}

的可能值 远程复制优化 RsyncAndSftp公司 (默认), RsyncOnly公司 ,和 没有 (其中完全递归rsync副本始终从CMake根目录执行)。 rsyncSingleDirectoryCommandArgs命令 当发出非递归rsync命令时(上面的步骤3),可以传递来定制rsync行为。现有属性 远程复制源 , rsyncCommandArgs命令 (在发出递归rsync命令时传递,上面的步骤4)和 rsynccopysources方法 也可用于自定义文件复制行为。请看 CMake Linux项目的其他设置 更多信息。

请注意,这些性能改进是特定于远程连接的。Visual Studio的 对WSL的本机支持 可以访问存储在Windows文件系统中的文件,从而无需在远程计算机上复制和维护源。

构建和部署分离的本地WSL支持

VisualStudio2019版本16.1引入了将远程生成系统与远程部署系统分离的功能。在Visual Studio 2019版本16.5中,此功能已扩展到包括 对WSL的本机支持 . 现在,您可以在WSL上本机构建,并在通过SSH连接的第二个远程Linux系统上部署/调试。

使用CMake项目分离构建和部署

中指定的Linux系统 CMake设置编辑器 用于生成。要在WSL上本机构建,请导航到CMake设置编辑器(配置下拉列表>管理配置…),然后添加新的WSL配置。您可以选择 WSL GCC调试 WSL Clang调试 取决于要使用的工具集。

中指定的远程Linux系统 启动.vs.json 用于调试。要在第二个远程Linux系统上进行调试,请将新的远程Linux配置添加到launch.vs.json(右键单击“解决方案资源管理器”>“调试和启动设置”中的根CMakeLists.txt),然后选择 C/C++在Linux(GDB)上的附加。 请看 远程Linux项目的launch.vs.json参考 了解有关自定义此配置和特定于生成和部署分离的属性的详细信息。

请注意,Linux(GDB)配置的C/C++接口是用于远程Linux系统上的调试。如果要在同一个WSL实例上构建和调试,请添加 WSL的C/C++启动 配置为launch.vs.json。更多关于 在这里可以找到launch.vs.json的入口点 .

使用基于MSBuild的Linux项目分离构建和部署

Linux中指定的Linux系统 属性页 用于生成。要在WSL上本机构建,请导航到configurationproperties>General并设置 工作集 . 您可以选择 用于Linux的Windows子系统的GCC 用于Linux的Windows子系统的Clang 取决于要使用的工具集。单击“应用”

默认情况下,visualstudio在WSL中构建和调试。要为调试指定另一个远程系统,请导航到“配置属性”>“调试”并设置 远程调试机 到指定的远程连接之一。你可以 添加新的远程连接 通过连接管理器。您还可以为要部署到的项目指定远程系统上目录的路径 远程部署目录 .

在CMake项目中轻松添加、删除和重命名文件

在visualstudio中使用CMake项目比以往任何时候都容易。在最新预览中,您可以从IDE添加、删除和重命名CMake项目中的源文件和目标,而无需手动编辑CMake脚本。使用解决方案资源管理器添加或删除文件时,VisualStudio将自动编辑CMake项目。您还可以从解决方案资源管理器的“目标”视图中添加、删除和重命名项目的目标。

You can now easily add, remove, and rename files in CMake projects in Visual Studio

在某些情况下,将源文件添加到CMake脚本可能不止一个地方是有意义的。发生这种情况时,Visual Studio将询问您要在何处进行更改,并显示建议修改的预览:

Visual Studio will prompt you to resolve ambiguity when adding a new file to your CMake project

从Visual Studio 2019 15.5 Preview 2开始,默认情况下会启用此功能,但可以在“工具”>“选项”>“CMake”、“启用自动CMake脚本修改…”中禁用此功能

CMake语言服务

最新的visualstudio预览版还可以轻松理解复杂的CMake项目。CMake脚本文件中的变量、函数和目标现在支持“转到定义”和“查找所有引用”等代码导航功能。

CMake language services, including Peek Definition, in CMakeLists.txt

这些导航特性在您的整个CMake项目中起作用,提供比na更高的工作效率ï跨文件和文件夹进行ve文本搜索,并与其他IDE生产力功能集成,如 Peek定义 . 请继续关注即将发布的独立博客文章中有关这两个CMake特性的更多信息。

与连接管理器交互的命令行实用程序

在Visual Studio 2019版本16.5或更高版本中,可以使用命令行实用程序以编程方式从连接存储中添加和删除远程连接。这对于提供新的开发机器或在持续集成中设置visualstudio等任务非常有用。有关实用程序的完整文档,包括 用法、命令和选项可以在这里找到 .

FIPS 140-2远程C++开发的合规性

联邦信息处理标准(FIPS)出版物140-2是美国政府的密码模型标准。标准的实施由NIST验证。从Visual Studio 16.5版开始,用C++进行远程Linux开发 符合FIPS 140-2 . 你可以跟着我们 在visualstudio和远程Linux系统之间设置安全的、符合FIPS的连接的分步说明 .

智能感知改进

当处理标准库时,IntelliSense现在显示更可读的类型名。例如,在“快速信息”工具提示中 标准::向量迭代器 变成_ std::vector::迭代器 .

我们还添加了切换Enter、Space和Tab是否作为提交字符起作用的功能,以及切换Tab是否用于插入代码段的功能。无论使用CMASE还是MSBuw项目,您可以在工具>选项>文本编辑器> C/C++ > Advest-ExtIsLeNeNe>下找到这些设置。

New Tools > Options > Text Editor > C/C++ > Advanced > IntelliSense settings in Visual Studio

给我们你的反馈

下载 Visual Studio 2019版本16.5预览版2 今天就来试试。我们很乐意收到您的来信,帮助我们确定优先级并为您构建合适的功能。我们可以通过以下评论联系到您, 开发者社区 ,电子邮件( visualcpp@microsoft.com ),和Twitter( @视觉 ). 提交bug或建议特性的最佳方法是通过开发者社区。

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0 分享