使用Visual Studio開發C+應用:增量編譯和Shell支援

兩項功能改進

Visual Studio 2019可以支援開發者在單一整合開發環境(IDE)下開發面向Windows和Linux(包括Windows Subsystem for Linux)的應用。Visual Studio 2019 v16。7 Preview 3進一步在Linux開發中引入了兩項新的特性:

1) 針對MSBuild Linux工程的增量編譯最佳化。

2) 增加了更加廣泛的Linux發行版和Shell的支援。

在Visual Studio中,C++開發者有兩種方法可以面向Linux系統開發應用。對於任何跨平臺開發或者考慮到開源目的的開發,我們的建議是使用帶有原生支援的CMake。這可以實現使用同一套原始碼來編寫面向不同目標平臺編譯指令碼。另外,你可以可以建立基於MSBuild的Linux工程來獲得熟悉的Visual Studio開發體驗。

針對MSBuild Linux工程的增量編譯最佳化

在MSBuild Linux工程中,現在你可以使用Ninja來實現更快的增量編譯了。可以透過在Visual Studio的工程屬性中的[General]設定頁設定[Enable Incremental Build]為 [With Ninja]即可啟用Ninja增量編譯。如下圖所示:

使用Visual Studio開發C+應用:增量編譯和Shell支援

請確保在Linux系統上已經安裝了Ninja。可以使用如下的指令在基於Debian的Linux系統上安裝Ninja:

# sudo apt-get update

# sudo apt-get install ninja-build

我們對一個包含了1000個。h標頭檔案和1000個。cpp原始檔的MSBuild Linux工程進行了效能測試。測試結果表明,使用了Ninja之後,對完整編譯和增量編譯(僅修改了一個頭檔案)所需要的時間大為減少,測試結果如下表所示:

使用Visual Studio開發C+應用:增量編譯和Shell支援

在上述的測試中,我們使用了一臺Ubuntu 20。04的虛擬機器,並在Visual Studio中使用SSH連線到這臺虛擬機器。你也可以我們對SSH的支援和本機WSL的支援來獲得這些最佳化。

溫馨提示:你可以在透過在工程屬性 \ [General] \ 平臺Toolset中選擇WSL或者Remote,以對WSL或者遠端Linux修改平臺Toolset。

對更加廣泛的Linux發行版和Shell的支援

我們同時也添加了對更加廣泛的Linux發行版和Shell的支援。這些變更主要應用在面向遠端Linux系統或者WSL的CMake工程和MSBuild Linux工程。

Visual Studio會在第一次執行Shell指令的時候向目標系統發起詢問。然後它會決定這條指令在重定向stderr時如何格式化,並從正在執行中的命令列中脫離。

Visual Studio現在可以支援的Shelll如下:

sh, csh, bash, tcsh, ksh, zsh, 和 das

如果檢測到不支援的Linux Shell,則我們會回退到”sh”環境。

另外,我們還在ConnectionManager。exe中添加了新的選項和命令,這些選項和命令將會幫助你覆蓋遠端連線建立後預設的Shell選擇。

ConnectionManager。exe是一個命令列工具,它主要用來在Visual Studio之外管理和維護遠端連線。

其主要使用方法如下:

> ConnectionManager.exe list – -properties

當執行上述指令時,目標連線的所有屬性會以列表的方式呈現出來。

> ConnectionManager.exe modify [default | connection_id | user@host [- -port port]] – -property [key=value]

上述指令主要用來定義或修改一個現有連線的屬性。如果”value”是空的,則屬性”key”將會被刪除。舉個例子,使用如下的指令

ConnectionManager。exe modify 21212121 – -property shell=csh

可以覆蓋ID為212121的連線的預設Shell。

你還可以執行如下指令來按連線ID來檢視所有儲存的連線列表:

ConnectionManager.exe list

最後,我們測試了所有這些新支援的Linux Shell。類似於新建工程,遠端標頭檔案同步,除錯等這些關鍵性的功能都得到了測試,這些測試都面向了CMake工程和MSBuild Linux工程,並使用到了如下列出的Linux Shell。

使用Visual Studio開發C+應用:增量編譯和Shell支援

總結

就當是對Windows生態開發者的一個小提醒:目前最新版的Visual Studio已經來到了 Visual Studio 2019 v16。7 Preview 3。

使用Visual Studio開發C+應用:增量編譯和Shell支援

TAG: LinuxVisualstudioShellMSBuild