用VisualStudio开发C++ Linux:增量构建改进和扩展的shell支持

VisualStudio 2019允许C++开发人员针对Windows和Linux(包括 Linux的Windows子系统 )从一个IDE的舒适。 Visual Studio 2019版本16.7预览版3 介绍了Linux开发特有的两个特性:为基于MSBuild的Linux项目改进了构建增量,并支持更广泛的Linux发行版和shell。

null

C++开发人员可以从VisualStudio中定位Linux系统。对于任何跨平台或着眼于开放采购的产品,我们的建议是 对CMake的本机支持 . 这允许您利用相同的源代码和构建脚本来针对多个平台。或者,可以创建 基于MSBuild的Linux项目 对于熟悉的Visual Studio体验。

改进了基于MSBuild的Linux项目的构建增量

你现在可以利用 忍者 在基于MSBuild的Linux项目中实现更快的增量构建。要启用Ninja构建,请导航到Property Pages>General并将“enable Incremental Build”设置为“with Ninja”。

图片[1]-用VisualStudio开发C++ Linux:增量构建改进和扩展的shell支持-yiteyi-C++库

确保在Linux系统上安装了ninja。您可以使用以下命令在基于Debian的Linux系统上安装ninja:

sudo apt-get update

sudo apt-get install ninja-build

我们使用一个基于MSBuild的Linux项目测试了Ninja的构建性能,该项目包含1000.h文件和1000.cpp文件。Ninja使完全重建和更改了一个头文件的构建的构建时间都加快了。

完全重建的端到端构建时间(分钟) 一次更改的端到端构建时间(分钟)
使用Ninja启用增量构建== 8:01 0:32
启用增量生成==否 12:57 5:26

这些测试是在通过SSH连接到visualstudio的本地VM(ubuntu20.04)上运行的,但是您可以通过我们的SSH支持和WSL的本机支持来利用这些改进。提醒您,在基于MSBuild的Linux项目中,您可以通过Property Pages>General>platform toolset选择平台工具集(WSL或remote)。

支持更广泛的Linux发行版和shell

我们还添加了对更广泛的Linux发行版和shell的支持。这些更改既适用于CMake项目,也适用于以远程Linux系统或WSL为目标的基于MSBuild的Linux项目。visualstudio现在在第一次发出命令时查询shell。然后它决定在重定向stderr时如何格式化命令行,以及如何根据发现的shell从正在运行的命令中分离。Visual Studio现在支持以下shell: sh、csh、bash、tcsh、ksh、zsh和dash . 如果Linux系统上发现的shell不受支持,那么我们可以退回到显式地对所有命令使用“sh”。

我们还添加了新的选项和命令 ConnectionManager.exe 以帮助您重写连接的shell选择。ConnectionManager.exe是一个命令行实用程序,用于管理Visual Studio外部存储的远程连接。

  • ConnectionManager.exe列表–-属性
    • 存在时,将为每个连接打印为连接定义的属性列表。
  • ConnectionManager.exe修改[默认|连接| id |user@host [–port]]–-property[key=value]
    • 定义或修改连接的属性。如果“value”为空,则删除属性“key”。例如,使用 ConnectionManager.exe modify 2121–-property shell=csh 为连接ID为2121的连接重写shell选项。
    • 你可以运行这个命令 ConnectionManager.exe列表 按连接ID查看已存储连接的列表。

最后,我们通过更改发出的命令,测试了对更广泛的Linux发行版的支持。 关键功能,如项目创建, 远程标头同步 使用以下发行版+shell对CMake项目和基于MSBuild的Linux项目进行了测试。

Unix发行版 已验证的外壳
FreeBSD公司 csh,鱼,zsh,bash
Ubuntu(WSL) 猛击
Ubuntu 18.04版 鱼,巴什,csh,zsh
Debian(WSL) 短跑

给我们你的反馈

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享