文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
近日 , 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 。 可以使用下图中的指令来进行安装:
在这篇文章中 , 我们会在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工程 , 如下图所示:
4. 在Visual Studio中启用CMake Presets集成 。 你可以通过在工程根目录中添加一个CMakePresets.json文件来启用它 , 也可以在Visual Studio的设置中进行全局启用 , 设置路径为:
工具 > 选项 > CMake > 常规 , 如下图所示:
5. 现在 , 你应该可以看到一个下拉菜单 , 可以从中选择活动的目标系统 。 这个系统将会用来配置和构建工程 。 Visual Studio会使用wsl -l -v来查询WSL安装状态 , 在下面的例子中 , 我选择的目标系统是 WSL2: Ubuntu-20.02 , 如下图所示:
请注意:如果Visual Studio开始自动的配置你的工程 , 请阅读下面的第9个步骤来处理CMake二进制部署 , 然后回到第6个步骤 。
6. 使用下图中的下拉菜单来选择活动的Preset配置 。 Preset配置用来告诉Visual Studio , 如何引入CMake工具和生成底层的构建系统 。 在上面的第5个步骤中 , 我使用的是Visual Studio中自动生成 的linux-default配置 。 如果你希望创建一个自定义的Preset配置 , 则可以选择”Manage Configurations…”菜单 , 如下图所示:
7. 使用右边的菜单来选择活动的构建Preset 。 构建Presets用来告诉Visual Studio如何调用构建工具 。 在上面的第5个步骤中 , 我使用了Visual Studio创建的默认配置 。
- WPS|喜爱大屏手机的用户看过来,这两款大屏手机使用体验堪比平板
- 芯片|一个指令查电脑使用痕迹!动过什么文件,看得清清楚楚
- 微信|苹果6手机使用了6年,就是微信打开较慢,有解决的办法吗?
- 星巴克|2021 年游戏开发中的 10 大编程语言:C++、Java、C#......
- 科学家|科普!二氧化碳培养箱的5条注意事项,直接关系仪器的使用寿命
- 苹果|百度carlife ,华为hicar ,苹果carplay使用感受
- 投影仪|联想t500投影仪怎么样?联想t500和t200区别哪个好?使用评测解读
- 索尼相机|你了解图片配置文件吗 它是做什么用的 索尼相机使用介绍
- WPS|WPS最大的败笔是“免费用,广告弹窗”,难怪用户纷纷使用office
- 三星|从三星s20u换到iphone13的使用感受,失去的不只是高刷!