使用 Visual Studio 2019 with WSL 基于 CMake 开发 Linux C++ 应用程序

本文介绍了如何使用Visual Studio 2019结合Windows Subsystem for Linux (WSL)利用CMake进行Linux C++应用程序的开发。通过CMakeLists.txt文件,Visual Studio自动配置IntelliSense并支持在Windows上编辑、生成和调试代码,然后无缝切换到Linux环境执行相同操作。要开始,需要在Visual Studio中安装Linux Development with C++工作负载,并在WSL中安装必要的编译器、gdb、rsync和zip等工具。创建CMake项目,管理配置(添加WSL-GCC或WSL-Clang配置),然后启动调试,即可在WSL环境中进行调试。

使用 Visual Studio 2019 with WSL 基于 CMake 开发 Linux C++ 应用程序

Visual Studio CMake 项目和 WSL

Visual Studio C 和 C++ 开发不再仅适用于 Windows。 本文介绍如何在 Windows 和 Linux 上使用 Visual Studio C++ 进行跨平台开发。 由于它基于 CMake,无需创建或生成 Visual Studio 项目。 打开包含 CMakeLists.txt 文件的文件夹时,Visual Studio 会自动配置 IntelliSense 并生成设置。 可以快速开始在 Windows 上本地编辑、生成和调试代码。 然后,切换配置,在 Linux 上执行相同的操作,所有这些操作都从 Visual Studio 中进行!

为了使用 Visual Studio 对 WSL 的本机支持,我们首先需要在 Visual Studio 中安装 Linux Development with C++ 工作负载。

我们要将 WSL 安装配置为与 Visual Studio 一起使用, WSL 首先需要安装以下工具:编译器(GCC 或 Clang)、gdb、rsync 和 zip。我们使用 CMake,那么还需要安装底层构建系统(Ninja 或 Unix Makefiles)。我们可以使用以下命令将它们安装:
sudo apt-get install g++ gdb make ninja-build rsync zip cmake

① 创建 CMake 项目

使用“CMake Project”模板创建一个新的 CMake 项目或打开一个现有的项目。

② 管理配置

导航到配置下拉菜单并选择 管理配置... 这将打开 CMake 设置编辑器。Visual Studio 默认创建一个 x64-Debug 配置。我们可以通过单击编辑器左侧配置管理器上方的绿色加号来添加新的 WSL 配置。选择 WSL-GCC-Debug 配置。如果您使用 Clang 进行构建,则可以选择 WSL-Clang-Debug 或 WSL-Clang-Release 配置。保存编辑器 (Ctrl + S) 并使用页面顶部的配置下拉菜单选择您的 WSL-GCC-Debug 配置作为活动配置。这将启动 WSL 配置的缓存生成。

③ 启动调试

在启动栏中,将启动项更改为我们当前文档的项目名称。现在按 F5 开始调试,我们的项目将构建,可执行文件将启动。我们可以在 Linux 控制台窗口 中看到程序的输出。

在 **Visual Studio (VS) 2022** 中连接 **WSL (Windows Subsystem for Linux)** 进行开发,可以充分利用 Linux 工具链(如 GCC、GDB)和 Windows IDE 的优势。以下是详细配置步骤: --- ## **1. 前置条件** - **Windows 10/11** 已安装 WSL 2(推荐 Ubuntu 22.04 LTS)。 - **Visual Studio 2022** 已安装 **“使用 C++Linux 开发”** 工作负载。 --- ## **2. 配置 WSL 环境** ### **(1) 安装编译工具链** 在 WSL 终端中运行: ```bash sudo apt update && sudo apt install -y g++ gdb make cmake ``` ### **(2) 验证工具链** ```bash g++ --version # 确认 GCC 已安装 gdb --version # 确认 GDB 已安装 ``` --- ## **3. 在 Visual Studio 中配置 WSL** ### **(1) 创建/打开项目** 1. **新建项目**:选择 **“Linux 控制台应用程序”**(或现有项目)。 2. **项目属性配置**: - 右键项目 → **属性** → **常规**: - **平台工具集**:选择 **GCC for Windows Subsystem for Linux**。 - **远程生成计算机**:选择你的 WSL 发行版(如 `Ubuntu-22.04`)。 ### **(2) 设置头文件和库路径** - 在 **项目属性 → C/C++ → 常规** 中: - **附加包含目录**:添加 WSL 中的路径(如 `/usr/include`)。 - 在 **链接器 → 常规** 中: - **附加库目录**:添加 WSL 库路径(如 `/usr/lib/x86_64-linux-gnu`)。 --- ## **4. 编译与调试** ### **(1) 编译项目** - 按 **F7** 或点击 **生成 → 生成解决方案**,VS 会自动在 WSL 中编译代码。 ### **(2) 调试项目** - 按 **F5** 启动调试,VS 会: 1. 在 WSL 中编译代码。 2. 通过 **GDB** 附加到进程进行调试。 - **调试控制台**:直接显示 WSL 中的程序输出。 --- ## **5. 文件系统交互** ### **(1) 访问 WSL 文件** - 在 VS 中直接编辑 WSL 中的文件: - 通过 **文件 → 打开 → 文件**,路径输入 `\\wsl$\Ubuntu-22.04\home\username\project`。 - **注意**:避免在 Windows 路径(如 `/mnt/c/`)中存放项目,可能引发权限问题。 ### **(2) 同步文件** - 使用 **rsync** 或 **Git** 保持文件同步(如需跨平台协作): ```bash rsync -avz /mnt/c/Users/yourname/project/ ~/project/ ``` --- ## **6. 高级配置** ### **(1) 使用 CMake 项目** 1. 创建 **CMake 项目**,修改 `CMakeSettings.json`: ```json { "name": "Linux-WSL", "generator": "Unix Makefiles", "remoteMachineName": "localhost", "cmakeExecutable": "/usr/bin/cmake", "buildRoot": "/home/username/build/${name}" } ``` 2. VS 会自动在 WSL 中生成和编译项目。 ### **(2) 远程调试运行中的进程** - 在 **调试 → 附加到进程** 中: - 选择 **连接类型** 为 `SSH`。 - 输入 WSL 的 IP 或 `localhost`,附加到目标进程。 --- ## **7. 常见问题** ### **Q1: VS 无法检测到 WSL** - **解决方法**: - 确保 WSL 已启动:`wsl -l -v`。 - 重启 VS 或重新加载项目。 ### **Q2: 编译错误“找不到头文件”** - **解决方法**: - 在 WSL 中安装开发库: ```bash sudo apt install libssl-dev zlib1g-dev ``` - 在 VS 项目中正确配置包含路径。 ### **Q3: 调试失败“GDB 连接超时”** - **解决方法**: - 在 WSL 中确保 `gdb` 已安装: ```bash sudo apt install gdb ``` - 在 VS 项目属性中检查 **调试器类型** 是否为 `GDB`。 --- ## **8. 性能优化** ### **(1) 避免跨文件系统性能损耗** - **将项目放在 WSL 原生路径**(如 `~/project/`),而非 `/mnt/c/`。 - **禁用 Windows 防病毒实时扫描**(对 WSL 目录添加例外)。 ### **(2) 使用 Ninja 替代 Make** 在 CMake 项目中: ```json "generator": "Ninja" ``` 并安装 Ninja: ```bash sudo apt install ninja-build ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值