news 2026/3/22 2:40:46

在 Windows 上 基于“适用于 Linux 的 Windows 子系统(WSL)”开发linux项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在 Windows 上 基于“适用于 Linux 的 Windows 子系统(WSL)”开发linux项目

在 Windows 上 基于“适用于 Linux 的 Windows 子系统(WSL)”开发linux项目

建议为跨平台或将设为开源的项目使用 CMake。 可以使用 CMake 项目在 Windows、适用于 Linux 的 Windows 子系统 (WSL) 和远程系统上生成和调试相同源代码。

1、必须确保 Windows上 的Visual Studio 支持C++ 的 Linux 开发

首先,请确保已安装 Visual Studio Linux 工作负载,包括 CMake 组件。它属于 Visual Studio 安装程序中的“使用 C++ 的 Linux 开发”工作负载。可参阅:下载、安装和设置 Linux 工作负载-CSDN博客

CMake 是一种跨平台开源工具,用于定义在多个平台上运行的生成过程。 本文假定你熟悉 CMake。 有关 CMake 的详细信息,请参阅 CMake 文档https://cmake.org/cmake/help/latest/index.html#。 建议从 CMake 教程 https://cmake.org/cmake/help/latest/guide/tutorial/index.html#guide:CMake%20Tutorial开始了解详细信息。

Visual Studio 对 CMake 的本机支持允许你从 Visual Studio 的同一实例编辑、生成和调试 Windows 上的 CMake 项目、适用于 Linux 的 Windows 子系统(WSL)和远程系统。 CMake 项目文件(例如CMakeLists.txt)直接由 Visual Studio 使用,以实现 IntelliSense 和浏览功能。 Visual Studio 直接调用 cmake.exe 进行 CMake 配置和生成。

“用于 Windows 的 C++ CMake 工具”作为“使用 C++ 的桌面开发”和“使用 C++ 的 Linux 开发”工作负载的一部分进行安装。 跨平台 CMake 开发需要适用于 Windows 的 C++ CMake 工具和“使用 C++ 的 Linux 开发”。

2、使用 Visual Studio 连接到 WSL的 Linux 系统

可以将 Linux 项目配置为以远程计算机或适用于 Linux 的 Windows 子系统 (WSL) 为目标。 对于远程计算机,需要在 Visual Studio 中设置远程连接,可参考使用 Visual Studio 连接到目标 Linux 系统 | Microsoft Learn。 对于 WSL,只需要连接到 WSL。

连接到 WSL:Linux 安装程序:WSL 上的 Ubuntu

从 Visual Studio 2019 版本 16.1 开始,Visual Studio 本机支持将 C++ 与适用于 Linux 的 Windows 子系统 (WSL) 结合使用。 这意味着可以直接在本地 WSL 安装上生成和调试。 不再需要添加远程连接或配置 SSH。 可在此处找到有关如何安装 WSL的详细信息。

若要配置 WSL 安装,使其可与 Visual Studio 结合使用,则需安装以下工具:gccclanggdbmakeninja-build(仅适用于使用 Visual Studio 2019 版本 16.6 或更高版本的 CMake 项目)rsynczip。 你可以使用此命令将它们安装在使用apt的发行版上,这还将安装 g++ 编译器。

以 WSL 为目标时,无需添加远程连接或配置 SSH 即可进行生成和调试。使用 Visual Studio for Intellisense 支持自动同步 Linux 标头需要 zip 和 rsync 。 仅 CMake 项目需要 ninja-build 。 如果所需应用程序尚不存在,则可以使用以下命令进行安装:

Bash

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

上述apt命令会安装:

  • C++ 编译器
  • gdb
  • CMake
  • rsync
  • zip
  • 基础生成系统生成器

此时,就连接到 WSL 上的Ubuntu 系统了。

3、创建 Linux CMake 项目

(1)新建 Linux 项目

若要在 Visual Studio 2019 中创建新的 Linux CMake 项目,请执行以下操作:

  • 《1》在 Visual Studio 中选择“文件”>“新建项目”,或按 Ctrl + Shift + N。
  • 《2》将“语言”设置为“C++”,然后搜索“CMake”。 然后选择“下一步”。 输入“名称”和“位置”,然后选择“创建”。

或者,可以在 Visual Studio 2019 中打开自己的 CMake 项目。 下面的部分说明如何执行此操作。

Visual Studio 创建一个最小的 CMakeLists.txt 文件,其中只包含可执行文件的名称和所需的最小 CMake 版本。 可以按自己喜欢的方式手动编辑此文件;Visual Studio 永远不会覆盖所做的更改。

  • 《3》启用 Visual Studio 的 CMake 预设集成。

启用 Visual Studio 的 CMake 预设集成。 选择“工具”“选项”>“CMake”“常规”>>。 选择“首选使用 CMake 预设进行配置、构建和测试”,然后选择“确定”。 相反,你可能已在项目的根目录下添加了一个CMakePresets.json文件。 有关详细信息,请参阅启用 CMake 预设集成。

  • 《4》若要激活集成:在主菜单中,选择“文件”“关闭文件夹”>。 这会显示“开始”页面。 在“打开最近使用的文件”下,选择刚关闭的文件夹来重新打开它。
  • 《5》Visual Studio 主菜单栏上有 3 个下拉列表。 使用左侧的下拉列表可选择活动目标系统。 将在此系统上调用 CMake 来配置和生成项目。 Visual Studio 使用wsl -l -v查询 WSL 安装项。 在下图中,显示了 WSL2: Ubuntu-20.04,且已选中它作为目标系统。

  • 《6》使用中间的下拉列表可选择活动配置预设。 配置预设会指示 Visual Studio 如何调用 CMake 和生成基础生成系统。 在步骤 7 中,活动配置预设是 Visual Studio 创建的 linux-default 预设。 若要创建自定义配置预设,请选择“管理配置...”;有关配置预设的详细信息,请参阅选择配置预设和编辑预设。

  • 《7》使用右侧下拉列表可选择活动生成预设。 生成预设会指示 Visual Studio 如何调用生成。 在步骤 5 的插图中,活动生成预设是 Visual Studio 创建的默认生成预设。 若要详细了解生成预设,请参阅选择生成预设。

  • 《8》在 WSL 2 上配置项目。 如果项目生成没有自动启动,请使用“项目”“配置 <项目名称>”手动调用配置>

  • 《9》如果未在 WSL 2 发行版上安装受支持的 CMake 版本,Visual Studio 将在主菜单功能区下提示部署最新版本的 CMake。 选择“是”,将 CMake 二进制文件部署到 WSL 2 发行版。(会在后面特意说明)

  • 《10》确认已完成配置步骤,并且你在“CMake”窗格下的“输出”窗口中看到“CMake 生成已完成”消息。 生成文件会写入 WSL 2 发行版的文件系统中的某个目录。

  • 《11》选择活动调试目标。 调试下拉菜单列出了项目可使用的所有 CMake 目标。

  • 《12》在解决方案资源管理器中展开项目子文件夹。 在CMakeProject.cpp文件中,在main()中设置断点。 还可在解决方案资源管理器中选择“视图选取器”按钮,导航到 CMake 目标视图,如以下屏幕截图中高亮所示:

  • 《13》选择“调试”“开始”,或者按 F5>。 项目会执行生成操作,可执行文件将在 WSL 2 发行版上启动,而 Visual Studio 将在断点处停止执行。 Linux 控制台窗口会显示程序的输出(在本例中为"Hello CMake."):

以下示例显示了一个简单的 CMakeLists.txt 文件和 .cpp 文件、.h 文件:

# CMakeList.txt: CMakeUnix1 的 CMake 项目,在此处包括源代码并定义 # 项目特定的逻辑。 # cmake_minimum_required (VERSION 3.8) #project (hello-cmake) # 将源代码添加到此项目的可执行文件。 add_executable (CMakeUnix1 "CMakeUnix1.cpp" "CMakeUnix1.h") # TODO: 如有需要,请添加测试并安装目标。
// CMakeUnix1.cpp: 定义应用程序的入口点。 // #include "CMakeUnix1.h" using namespace std; int main() { cout << "Hello CMake." << endl; return 0; }
// CMakeUnix1.h: 标准系统包含文件的包含文件 // 或项目特定的包含文件。 #pragma once #include <iostream> // TODO: 在此处引用程序需要的其他标头。

CMakePresets_schema.json

{ "version": 2, "configurePresets": [ { "name": "linux-default", "displayName": "Linux Debug", "description": "面向适用于 Linux 的 Windows 子系统(WSL)或远程 Linux 系统。", "generator": "Ninja", "binaryDir": "${sourceDir}/out/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" }, "vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { "hostOS": [ "Linux" ] }, "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}" } } }, { "name": "windows-default", "displayName": "Windows x64 Debug", "description": "面向具有 Visual Studio 开发环境的 Windows。", "generator": "Ninja", "binaryDir": "${sourceDir}/out/build/${presetName}", "architecture": { "value": "x64", "strategy": "external" }, "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" }, "vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { "hostOS": [ "Windows" ] } } } ] }
# CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置 # 并包含子项目。 # cmake_minimum_required (VERSION 3.8) project ("CMakeUnix1") # 包含子项目。 add_subdirectory ("CMakeUnix1")

(2)或 打开 CMake 项目文件夹

打开包含现有 CMake 项目的文件夹时,Visual Studio 会使用 CMake 缓存中的变量来自动配置 IntelliSense 和生成。 本地配置和调试设置将存储在 JSON 文件中。 可以选择与使用 Visual Studio 的其他人共享这些文件。

Visual Studio 不会修改 CMakeLists.txt 文件。 这使得处理同一项目的其他人员可以继续使用其现有工具。 在保存对 CMakeLists.txt 的编辑或在某些情况下保存对 CMakeSettings.json 的编辑时,Visual Studio 会重新生成缓存。 如果使用的是“现有缓存”配置,则 Visual Studio 不会修改缓存。

有关 Visual Studio 中的 CMake 支持的常规信息,请参阅 Visual Studio 中的 CMake 项目。 在继续之前,请先阅读相关内容。

首先,在主菜单中选择文件>打开>文件夹,或在开发人员命令提示窗口中键入devenv.exe <foldername>。 打开的文件夹中应该有一个 CMakeLists.txt 文件,以及你的源代码。

4、在 Visual Studio 中,将 Microsoft 的 CMake 包部署到适用于 Linux 的 Windows 子系统 (WSL)

在 Visual Studio 中,将 Microsoft 的 CMake 包部署到适用于 Linux 的 Windows 子系统 (WSL) 是一个自动化的过程,通常由 Visual Studio 在检测到需要时自动处理。以下是详细步骤和相关信息。

(1)部署过程概述

当您在 Visual Studio 中配置一个 CMake 项目并以 WSL 为目标系统时,如果 WSL 发行版上未安装支持的 CMake 版本,Visual Studio 会自动提示您部署最新版本的 CMake 二进制文件。这个过程包括将 CMake 安装到 WSL 环境中,以便后续的生成和调试操作能够顺利进行。‌

(2)具体步骤

  1. 打开 CMake 项目‌:在 Visual Studio 中,选择“文件”>“打开”>“文件夹”,然后导航到包含CMakeLists.txt文件的项目根目录。‌
  2. 选择 WSL 作为目标系统‌:在 Visual Studio 主工具栏的“目标系统”下拉列表中,选择您的 WSL 发行版(例如 Ubuntu)。Visual Studio 会自动检测已安装的 WSL 系统。‌
  3. 自动部署提示‌:如果 WSL 上未安装支持的 CMake 版本,Visual Studio 会在“输出”窗口中显示提示消息,例如:“检测到 CMake 缓存过期。正在自动配置项目...” 或直接提示部署 CMake。‌
  4. 确认部署‌:在提示出现时,选择“是”或“部署”选项,Visual Studio 会自动将最新版本的 CMake 二进制文件部署到 WSL 发行版。部署完成后,您会在“输出”窗口中看到“CMake 生成完成”的消息。‌
  5. 验证安装‌:部署成功后,您可以打开 WSL 终端,运行cmake --version来验证 CMake 是否已正确安装。

(3)注意事项

  • ‌WSL 版本‌:确保使用 WSL 2,因为 WSL 1 可能不支持某些功能。您可以通过 wsl -l -v 命令检查 WSL 安装。‌
  • ‌手动安装备用‌:如果自动部署失败,您可以手动在 WSL 发行版中安装 CMake。例如,在基于 Debian/Ubuntu 的系统上,使用以下命令:

    Bash

    sudo apt update sudo apt install cmake

  • ‌Visual Studio 配置‌:为了启用 CMake 预设集成,建议在“工具”>“选项”>“CMake”>“常规”中选中“使用 CMake 预设进行配置、构建和测试”。然后关闭并重新打开项目文件夹以激活集成。‌

通过以上步骤,Visual Studio 会无缝处理 CMake 的部署,使您能够专注于开发。如果遇到问题,请检查 WSL 连接和 Visual Studio 的更新状态。

请参阅 :

1、下载、安装和设置 Linux 工作负载-CSDN博客

2、在 Windows 上安装 Linux-CSDN博客

3、使用 Visual Studio 连接到目标 Linux 系统 | Microsoft Learn

4、Visual Studio 中的 CMake 项目 | Microsoft Learn

5、演练:使用适用于 Linux 的 Microsoft Windows 子系统 2 (WSL 2) 和 Visual Studio 2022 生成和调试 C++ | Microsoft Learn

CMakeSettings.json 模板目录:

C:\Users\mt\Documents\VisualStudio\CMakeSettingsTemplates

【有点碎片化,还没整理完……】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 9:00:39

Bright Data代理目标采集、访问

Bright Data代理目标采集除了视频中提到的代理集成&#xff0c;现在亮数据还有新活动&#xff0c;通过链接注册就送30刀&#xff0c;适用于所用产品&#xff0c;感兴趣的小伙伴快点击吧&#xff01;亮数据地址&#xff1a; 点击跳转

作者头像 李华
网站建设 2026/3/14 7:40:18

Langchain-Chatchat结合Docker Compose快速部署

Langchain-Chatchat 结合 Docker Compose 的本地智能问答系统部署实践 在企业数字化转型不断深入的今天&#xff0c;知识管理正面临前所未有的挑战&#xff1a;制度文档分散、新员工培训周期长、重复性咨询消耗大量人力。更关键的是&#xff0c;当我们将敏感数据交给公有云 AI…

作者头像 李华
网站建设 2026/3/13 7:46:24

基于深度学习的非机动车头盔检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)

视频演示 基于深度学习的非机动车头盔检测系统演示与介绍目录 视频演示 1. 前言​ 2. 项目演示 2.1 用户登录界面 2.2 新用户注册 2.3 主界面布局 2.4 个人信息管理 2.5 多模态检测展示 2.6 多模型切换 3.模型训练核心代码 4. 技术栈 5. YOLO模型对比与识别效果解析 …

作者头像 李华
网站建设 2026/3/14 21:55:44

T型槽平台的高效应用之道

T型槽平台是一种广泛应用于机械加工、装配、检测等领域的工装设备&#xff0c;其结构设计独特&#xff0c;具有高精度、高稳定性以及灵活可调的特点。以下是关于T型槽平台的高效应用方法。合理选择材质与规格T型槽平台的材质通常包括铸铁、钢制和铝合金等。铸铁平台具有优异的减…

作者头像 李华
网站建设 2026/3/14 9:49:58

Langchain-Chatchat问答系统灰度期间技术支持团队配置

Langchain-Chatchat问答系统灰度期间技术支持团队配置 在企业数字化转型加速的今天&#xff0c;员工对内部知识获取效率的要求越来越高。一个常见的场景是&#xff1a;新员工入职后反复询问“年假如何申请”“差旅报销标准是多少”&#xff0c;HR和行政人员疲于应对重复问题&am…

作者头像 李华