使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

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

WSL2工具集是如何工作的?

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

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

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

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

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

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

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

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

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

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

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

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

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

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

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

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

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

9. 如果你没有在WSL2发行版上安装CMake,则Visual Studio会提示你需要安装一个CMake的最新版本。请点击下图中的Yes来将CMake二进制文件部署到目标WSL2系统。

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

10. 确认配置步骤完成,你可以在CMake的输出窗口中看到CMake生成完成的信息。请注意,工程编译生成的二进制文件都会复制到WSL2目标系统。

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

11. 选择活动的调试目标。调试下拉菜单将会列出所有可用的CMake目标,如下图所示:

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

12. 设置断点。在解决方案管理器中展开项目子目录,然后在main函数中设置一个断点。你也可以通过点击解决方案中国的选择按钮来导航到CMake目标视图,如下图所示:

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

13. 点击调试 > 开始,或者点击F5按钮。你的工程将会开始构建,生成的二进制文件将会在WSL2发行版上启动,然后你设置的断点将会被触发,如下图所示:

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

在WSL2发行版中进行MSBuild工程开发

在Visual Studio中进行C 跨平台开发时,我们推荐使用CMake,因为开发者可以在Windows,WSL和远程系统上构建和调试相同的工程代码。如果你已经使用了MSBuild开发了一个Linux工程,则你可以在下图中的设置界面中进行升级,设置路径:属性页 > 常规 > 平台工具集

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

总结

WSL2工具集和CMake Presets集成,目前还是处于预览版,但老大哥依然在努力。
我还是能看到的。

最后

Microsoft Visual C 团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C 的知识和最新的开发进展。大浪淘沙,如果你对Visual C 这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Build and Debug C with WSL 2 Distributions and Visual Studio 2022》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

使用VS2022和WSL2开发和调试C++代码(vs2019 wsl)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年5月17日 下午1:44
下一篇 2023年5月17日 下午2:00

相关推荐

  • 项目管理的工作计划

    项目管理的工作计划 项目管理是组织中非常重要的一部分,它涉及到资源的分配、时间的协调和控制以及项目的交付。一个有效的项目管理可以帮助组织实现目标,并减少项目失败的风险。 下面是一份…

    科研百科 2024年9月27日
    22
  • 第三方飞检总合得93分在绿城集团可以排第几

    第三方飞检总合得93分在绿城集团可以排第几 在绿城集团,第三方飞检是确保产品品质和安全性的重要措施之一。第三方飞检是指由独立的第三方机构对绿城集团的产品或服务进行安全检查和评估。这…

    科研百科 2024年10月26日
    2
  • 中共庆阳市委老干部局公开选调工作人员公告(庆阳市老干局领导简介)

    根据《庆阳市市直机关事业单位公开选调工作人员办法(试行)》有关规定,中共庆阳市委老干部局决定为局属参公事业单位公开选调3名工作人员。现将有关事项公告如下: 一、选调职位及人数 1….

    科研百科 2024年6月22日
    103
  • 安徽省高校研究生科研项目

    安徽省高校研究生科研项目 近年来,安徽省高校在研究生教育方面取得了显著成就。作为安徽省高等教育的重要组成部分,高校研究生教育在推动科技创新和培养高素质人才方面发挥了重要作用。 在研…

    科研百科 2024年10月7日
    17
  • 申请文物保护单位的申请书

    申请文物保护单位的申请书 尊敬的有关部门: 我志愿申请贵部门分配给我的文物保护单位。 我的家庭拥有一件历史悠久的文化遗产——家族谱系。在我家族的历史中,有许多珍贵的文物和历史资料保…

    科研百科 2024年12月8日
    0
  • 低代码开发平台ipad

    低代码开发平台是一种新兴的软件开发工具,它可以帮助开发人员快速构建应用程序,而无需编写大量的代码。随着移动设备的普及,iPad成为了许多人的首选工具。因此,将低代码开发平台与iPa…

    科研百科 2024年3月1日
    99
  • 监理工程师建设工程合同管理

    第一章建设工程合同管理法律制度 根据计价方式不同,有单价合同,总价合同,成本加酬金合同。 ⑴单价合同:适合于工期较短,工作内容和工程量变化幅度不大的项目。 ⑵总价合同:适用于工程范…

    科研百科 2022年11月17日
    178
  • 看板图怎么画?快速制作商务大气的看板图表(看板图是什么)

    看板图是挂在公司、工厂公共空间醒目的地方用于向员工和客户传达信息。看板图由一个个板块组成,通常由工作人员介绍和职责、任务与目标、生产或项目管理、奖惩公告、注意事项等等内容构成。很多…

    科研百科 2023年3月27日
    145
  • nedev低代码

    低代码开发平台(Low-Code Development Platform)是一种新兴的软件开发工具,它通过简化和加速应用程序开发过程,使开发人员能够以更快的速度构建和部署应用程序…

    科研百科 2024年2月28日
    113
  • 施工进度计划表软件哪个好

    施工进度计划表软件哪个好? 随着建筑行业的发展,施工进度计划表软件成为了施工过程中必不可少的工具。目前市面上有许多施工进度计划表软件可供选择,那么哪个软件更好呢?下面我将详细介绍一…

    科研百科 2025年1月10日
    0