使用VS2022和WSL2开发和调试C

近日,VS为C++开发者新引入了原生WSL2工具集支持。这个工具集目前已在VSv17.0预览版2中可用。WSL2是用于Linux系统的Windows子系统(WSL)架构的新一代版本,可提供更好的Linux文件系统性能、图形用户界面支持和完整的系统调用兼容性。VisualStudio中的WSL2工具集可以用来在VisualStudio中直接开发和调试基于WSL2发行版的代码,从而免去了添加SSH连接的繁琐步骤。在之前VSv16.1中,开发者已经可以使用WSL1原生工具集在WSL1上开发和调试C++代码了。VisualStudioWSL2工具集同时支持CMake工程和基于MSBuild的工程。但我们还是推荐在VisualStudio使用CMake来开发所有C++跨平台代码,因为这样你就可以在Windows,WSL和其他远程系统上使用同一套开发环境。

WSL2工具集是如何工作的?

对于VisualStudio中的C++跨平台开发,我们假定所有源文件都来自于Windows文件系统。当面向一个WSL2发行版系统时,VisualStudio会执行一次从本地Windows文件系统到目标WSL系统的文件拷贝操作。这个拷贝操作会在你使用WSL2时由VisualStudio自动完成,你不需要做任何手动操作。对于WSL1和WSL2的具体差异,请参考我们关于WSL1和WSL2对比的文章。下面,我们将会演示如何在WSL2使用CMake,还会简要介绍下基于MSBuild工程上的WSL2支持。

在WSL2发行版上进行CMake跨平台开发

VisualStudio中的CMake集成可以支持WSL2工具集成。下面是在一个WSL2发行版上使用CMake进行构建和调试的基本步骤:1.参考MSDN文档,安装WSL和WSL2发行版。2.在安装好的WSL2发行版上安装需要的构建工具。你将需要安装C++编译器,gdb调试器,CMake编译工具,rsync和zip。可以使用下图中的指令来进行安装:

在这篇文章中,我们会在Ubuntu上使用GCC和Ninja这两个工具。同时,我还会在第9个步骤中使用VisualStudioCMake二进制部署来安装一个比较新的CMake版本。

3.在VSv17.0预览版2中打开一个CMake工程。VisualStudio会将一个带有CMakeLists.txt文件的工程根目录看做一个CMake工程。你可以像类似于bullet3那样直接克隆一个CMake仓库,也可以打开一个本地CMake工程,也可以使用CMake工程模板来创建一个全新的CMake工程。下文,我会使用一个CMake模板来创建新的CMake工程,如下图所示:

4.在VisualStudio中启用CMakePresets集成。你可以通过在工程根目录中添加一个CMakePresets.json文件来启用它,也可以在VisualStudio的设置中进行全局启用,设置路径为:工具选项CMake常规,如下图所示:

5.现在,你应该可以看到一个下拉菜单,可以从中选择活动的目标系统。这个系统将会用来配置和构建工程。VisualStudio会使用wsl-l-v来查询WSL安装状态,在下面的例子中,我选择的目标系统是WSL2:Ubuntu-20.02,如下图所示:

请注意:如果VisualStudio开始自动的配置你的工程,请阅读下面的第9个步骤来处理CMake二进制部署,然后回到第6个步骤。

6.使用下图中的下拉菜单来选择活动的Preset配置。Preset配置用来告诉VisualStudio,如何引入CMake工具和生成底层的构建系统。在上面的第5个步骤中,我使用的是VisualStudio中自动生成的linux-default配置。如果你希望创建一个自定义的Preset配置,则可以选择”ManageConfigurations…”菜单,如下图所示:

7.使用右边的菜单来选择活动的构建Preset。构建Presets用来告诉VisualStudio如何调用构建工具。在上面的第5个步骤中,我使用了VisualStudio创建的默认配置。

8.在WSL2中配置工程。如果工程构建没有自动开始,则可以通过点击工程配置工程进行手动启动,如下图所示:

9.如果你没有在WSL2发行版上安装CMake,则VisualStudio会提示你需要安装一个CMake的最新版本。


转载请注明:http://www.aierlanlan.com/rzfs/1268.html