C++与Visual Studio 2019和Windows子系统的Linux(WSL)

此帖于2020年12月11日更新

null

Visual Studio 2019版本16.1 添加了使用C++的本地支持 Windows Linux子系统(WSL) . WSL允许您直接在Windows上运行轻量级Linux环境,包括大多数命令行工具、实用程序和应用程序。在visualstudio中,您不再需要 添加远程连接或配置SSH 以便在本地WSL安装上构建和调试。这将节省您在Linux环境中启动和运行的时间,并且无需在远程计算机上复制和维护源代码。 为了使用我们对WSL的本机支持,您需要安装 用C++开发Linux Visual Studio中的工作负载。

在这篇博文中,我们将首先了解如何设置WSL。然后我们将通过一个 CMake项目 和一个 基于MSBuild的Linux项目 . 我们建议使用CGEAR来实现所有C++跨平台开发。如果您刚刚开始了解我们对CMake的本机支持,请务必查看我们的 visualstudio中的CMake支持 介绍页也是。

WSL1与WSL2

我们对WSL的本机支持在WSL1中效果最好。我们的支持通过wsl.exe在本地执行所有命令,并依赖安装在/mnt文件夹下的Windows驱动器(例如/mnt/c/Users…)从wsl访问本地源文件。使用WSL2时,这些命令的速度较慢,因为在Windows和Linux操作系统中,WSL1的性能比WSL2快。进一步了解WSL1和WSL2之间的区别 在这里 .

为了避免这些慢化,您可以在本地WSL2安装和运行SSH 添加新的SSH连接 像远程机器一样连接到WSL2。请继续关注 C++团队博客 有关我们的WSL2支持的更多信息。

设置WSL

你可以找到关于 如何安装WSL 在这里,但是最简单的方法是从 微软商店 .

要将WSL安装配置为与visualstudio一起使用,需要安装以下工具:编译器(GCC或Clang)、gdb、rsync和zip。如果您使用的是CMake,那么还需要安装底层构建系统(Ninja或Unix Makefiles)。您可以通过以下命令将它们安装在使用apt的发行版上:

sudo apt update
sudo apt install g++ gdb make ninja-build rsync zip

在本教程中,我将使用GCC和Unix生成文件。

rsync和zip的包含允许visualstudio将头文件从WSL实例提取到Windows文件系统,以便用于IntelliSense。由于无法从Windows看到WSL的根文件系统,因此在WSL内部进行本地rsync复制,将头复制到Windows可见的位置。这是VisualStudio执行的一次性操作 为Linux连接配置IntelliSense .

visualstudiocmake项目和WSL

让我们先来看一个简单的CMake项目。

1.启动Visual Studio 2019(版本16.1或更高版本),并使用“CMake project”模板创建新的CMake项目或打开现有的项目。

2.导航到配置下拉菜单并选择“管理配置…”这将打开CMake设置编辑器。

图片[1]-C++与Visual Studio 2019和Windows子系统的Linux(WSL)-yiteyi-C++库 3.默认情况下,Visual Studio创建x64调试配置。您可以通过单击编辑器左侧configuration manager上方的绿色加号来添加新的WSL配置。

Image Linux Configs 4.选择WSL GCC调试配置。如果您是使用Clang构建的,那么您可以选择WSL Clang Debug或WSL Clang Release配置。

Image Linux NewConfig 5.默认情况下,VisualStudio将在 默认WSL配置 . 如果您有WSL的并行安装,那么可以通过在CMake设置编辑器的“常规”部分下设置“WSL可执行文件的路径”属性来指定visualstudio应该使用哪个WSL可执行文件。

6.选择Unix Makefiles作为生成器。如果您使用的是Visual Studio 2019版本16.6或更高版本,则默认情况下Visual Studio将尝试使用Ninja。向下滚动到CMake设置编辑器的底部,然后单击“显示高级设置”链接。将“Generator”设置为Unix Makefiles。

The CMake Settings Editor is open. The Generator option is set to Unix Makefiles.

7.保存编辑器(Ctrl+S)并使用页面顶部的配置下拉菜单选择WSL GCC调试配置作为活动配置。这将启动WSL配置的缓存生成。

Image Linux SelectConfig 8.如果WSL安装中没有CMake,则会提示您从Visual Studio自动部署CMake的最新版本。如果您缺少任何其他依赖项(gcc、gdb、make、rsync、zip),请参见上面的WSL设置。

9.在“解决方案资源管理器”中展开“项目”子文件夹,并在.cpp文件中设置断点 主() .

10.在启动栏中,将启动目标从“当前文档”更改为项目名称。

11.现在单击“开始”(调试>开始)或按F5。您的项目将生成,可执行文件将启动,您将到达断点。您可以在Linux控制台窗口中看到程序的输出(在本例中为“hellocmake”)。

A sample CMake project is running under the debugger and hitting a breakpoint. The Linux Console Window displays the program output.

基于visualstudiomsbuild的项目和WSL

我们还支持在visualstudio中使用基于MSBuild的Linux项目中的WSL。以下是开始的步骤。

1.在Visual Studio 2019版本16.1或更高版本中创建一个新的Linux控制台应用程序(您可以按Linux筛选平台并查找“控制台应用程序”),或打开一个现有的应用程序。

2.在“解决方案资源管理器”中右键单击项目,然后选择“属性”以打开项目属性页。

The Solution Explorer in Visual Studio. "Properties" is selected from the project's context menu.

3.在打开的对话框中,您将看到“常规”属性页。在此页面上,有一个“平台工具集”选项。将此选项从“GCC for Remote Linux”更改为“GCC for Windows Subsystem for Linux”。如果使用Clang构建,则可以选择“Clang for Windows Subsystem for Linux”工具集。

Image Linux WSLToolset

4.默认情况下,VisualStudio将以正在安装的WSL安装为目标 通过wslconfig设置为默认值 . 如果同时安装了WSL,则可以通过在“平台工具集”的正下方设置“WSL*.exe完整路径”选项来指定Visual Studio应使用的WSL可执行文件。请按“确定”。

5.在main.cpp中设置断点,点击“开始调试”(调试>开始调试)。如果您缺少对WSL安装的任何依赖性(gcc、gdb、rsync、zip),请参阅上面的WSL设置。您可以在Linux控制台窗口中看到程序的输出。

A C++ Linux project is running under the debugger. The Linux Console Windows displays the output of the application.

给我们你的反馈!

如果您对WSL或任何有关我们在visualstudio中的Linux支持的反馈,我们很乐意收到您的来信。我们可以通过下面的评论或Twitter联系我们( @视觉 ). 如果您在visualstudio或MSVC中遇到其他问题,或者 建议,你可以用 报告问题 工具或直接访问 Visual Studio开发人员社区 .


马上就来…

本周晚些时候,C++团队博客将发布更多关于Linux项目的Access SabiZiver集成、代码分析快速修复和快速信息改进的公告。敬请期待!

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0 分享