在 Windows 上快速搭建 VSCode 的 C++ 开发环境(基于 WSL)

文章目录

一、前言

VSCode,一款轻量级但功能强大的代码编辑器,启动速度快、界面高度可定制、扩展丰富,支持多种编程语言。

WSL,全称 Windows Subsystem for Linux, 是微软推出的一项革命性的技术,可以在 Windows 系统上直接运行原生的 GNU/Linux 环境,不用搭建虚拟机。直接在 Windows 上体验到接近原生的 Linux 性能,和使用 Linux 的各种开发工具链。WSL 2 更是通过轻量级虚拟机技术,进一步提升性能和兼容性。

VS Code 与 WSL 结合,完美解决在 Windows 上进行 Linux C++ 开发。不用为 Windows C++ 配置复杂的工具链,也不用担心 Windows 和 Linux 环境下的编译差异。WSL 提供一个稳定、高效、与 Linux 环境高度一致的编译和运行环境,而 VS Code 则提供优异的代码编辑和调试,两者通过 Remote - WSL 扩展无缝连接,既有了原生的 Linux 开发工作站,又能享受 Windows 系统的便捷。

希望在 Windows 上获得类似 Linux 开发体验的开发者,特别是那些需要使用 GCC/G++、GDB 或 CMake 等 Linux 原生工具链的开发者,一定不要错过。在这里提供一个完整的在 Windows 上配置 vscode 的c++环境,适用现在大多数的 Windows 系统,包括Window 11。

二、环境准备与 WSL 安装

WSL 是在 Windows 上运行 Linux 环境的基础。

要安装 WSL ,系统版本必须是Windows 10 版本 2004 及更高版本 (Build 19041 或更高版本) ,或者 Windows 11

查看 Windows 版本和内部版本号:按下 Win + R 键,输入 winver 并回车。

推荐安装 WSL 2, 在WSL基础上提供更优秀的性能和完整的系统调用兼容性。不过,WSL 2 要启用"虚拟机平台"功能才行。

WSL 默认是不启动的,要开启,先在 "开始" 菜单搜索 "启用或关闭 Windows 功能"。在打开的窗口中,找到并勾选"适用于 Linux 的 Windows 子系统"和"虚拟机平台"这两个选项。系统会安装所需的组件,这是安装 WSL 的关键。

然后以管理员身份运行 PowerShell 或 cmd,输入如下命令:

PowerShell 复制代码
wsl --install

自动启用所需的 WSL 功能,并安装默认的 Linux 发行版(最新版本的 Ubuntu LTS)。

如果想安装指定的Linux发行版,可以用-d参数:

bash 复制代码
wsl --install -d Ubuntu-22.04

安装完成后,Ubuntu 会自动启动,首次要创建新的 UNIX 用户名和密码。这个用户名和密码是 Ubuntu 环境中使用的,不需要和 Windows 用户名相同。

安装完 Ubuntu 后,在搜索栏可以找到Ubuntu:

开启 Ubuntu 第一件要做的事情就是更新其软件包列表并升级已安装的软件包。

bash 复制代码
sudo apt update
sudo apt upgrade

输出:

bash 复制代码
~$ sudo apt update
[sudo] password for fly:
Get:1 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:2 http://security.ubuntu.com/ubuntu noble-security/main amd64 Components [21.6 kB]
Get:3 http://security.ubuntu.com/ubuntu noble-security/universe amd64 Packages [878 kB]
Get:4 http://security.ubuntu.com/ubuntu noble-security/universe Translation-en [194 kB]
Get:5 http://security.ubuntu.com/ubuntu noble-security/universe amd64 Components [52.2 kB]
Get:6 http://security.ubuntu.com/ubuntu noble-security/universe amd64 c-n-f Metadata [17.0 kB]
Get:7 http://security.ubuntu.com/ubuntu noble-security/restricted amd64 Components [212 B]
Get:8 http://security.ubuntu.com/ubuntu noble-security/multiverse amd64 Packages [18.5 kB]
Get:9 http://security.ubuntu.com/ubuntu noble-security/multiverse Translation-en [4288 B]
Get:10 http://security.ubuntu.com/ubuntu noble-security/multiverse amd64 Components [212 B]
Get:11 http://security.ubuntu.com/ubuntu noble-security/multiverse amd64 c-n-f Metadata [380 B]
Hit:12 http://archive.ubuntu.com/ubuntu noble InRelease
Get:13 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:14 http://archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:15 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages [15.0 MB]
Get:16 http://archive.ubuntu.com/ubuntu noble/universe Translation-en [5982 kB]
Get:17 http://archive.ubuntu.com/ubuntu noble/universe amd64 Components [3871 kB]
Get:18 http://archive.ubuntu.com/ubuntu noble/universe amd64 c-n-f Metadata [301 kB]
Get:19 http://archive.ubuntu.com/ubuntu noble/multiverse amd64 Packages [269 kB]
Get:20 http://archive.ubuntu.com/ubuntu noble/multiverse Translation-en [118 kB]
Get:21 http://archive.ubuntu.com/ubuntu noble/multiverse amd64 Components [35.0 kB]
Get:22 http://archive.ubuntu.com/ubuntu noble/multiverse amd64 c-n-f Metadata [8328 B]
Get:23 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1313 kB]
Get:24 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [164 kB]
Get:25 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1120 kB]
Get:26 http://archive.ubuntu.com/ubuntu noble-updates/universe Translation-en [287 kB]
Get:27 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [377 kB]
Get:28 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 c-n-f Metadata [26.0 kB]
Get:29 http://archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Components [212 B]
Get:30 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [33.2 kB]
Get:31 http://archive.ubuntu.com/ubuntu noble-updates/multiverse Translation-en [6772 B]
Get:32 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B]
Get:33 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 c-n-f Metadata [592 B]
Get:34 http://archive.ubuntu.com/ubuntu noble-backports/main amd64 Packages [39.9 kB]
Get:35 http://archive.ubuntu.com/ubuntu noble-backports/main Translation-en [9152 B]
Get:36 http://archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [7084 B]
Get:37 http://archive.ubuntu.com/ubuntu noble-backports/main amd64 c-n-f Metadata [272 B]
Get:38 http://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Packages [28.9 kB]
Get:39 http://archive.ubuntu.com/ubuntu noble-backports/universe Translation-en [17.4 kB]
Get:40 http://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [30.8 kB]
Get:41 http://archive.ubuntu.com/ubuntu noble-backports/universe amd64 c-n-f Metadata [1304 B]
Get:42 http://archive.ubuntu.com/ubuntu noble-backports/restricted amd64 Components [216 B]
Get:43 http://archive.ubuntu.com/ubuntu noble-backports/restricted amd64 c-n-f Metadata [116 B]
Get:44 http://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Components [212 B]
Get:45 http://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 c-n-f Metadata [116 B]
Fetched 30.7 MB in 1min 55s (267 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
~$ sudo apt upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

现在就准备好了 Linux 开发环境。

三、安装 C++ 开发工具链

可以装 C++ 开发所需的核心工具了。这些工具包括编译器 (GCC/G++)、调试器 (GDB)、构建工具 (Make) 以及项目生成器 (CMake),还有 Git 项目管理。

build-essential 是一个元软件包,包含了编译 C/C++ 程序所需的基本工具,其中就有 GCC/G++ 编译器、Make 工具以及其他一些常用的开发库和头文件。

安装 build-essential

bash 复制代码
sudo apt install build-essential

安装完成后,验证 GCC/G++ 和 Make 是否安装成功:

bash 复制代码
gcc --version
g++ --version
make --version

如果命令能够正确返回版本信息,则说明安装成功。

bash 复制代码
fly@LAPTOP-V34UPA81:~$ gcc --version
gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

fly@LAPTOP-V34UPA81:~$ g++ --version
g++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

fly@LAPTOP-V34UPA81:~$ make --version
GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

GDB (GNU Debugger) 是 Linux 环境下功能强大的调试器,可以在 VS Code 中对 C++ 程序进行断点调试、单步执行等操作。

安装 GDB:

bash 复制代码
sudo apt install gdb

安装完成后,验证 GDB 是否安装成功:

bash 复制代码
gdb --version

如果能看到 GDB 的版本信息,则表示安装成功。

bash 复制代码
~$ gdb --version
GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

CMake 是一个跨平台的开源构建系统生成工具。独立于编译器的配置文件来生成标准构建文件,对于大型或跨平台的 C++ 项目来说,CMake 几乎是不可或缺的。

安装 CMake:

bash 复制代码
sudo apt install cmake

安装完成后,验证 CMake 是否安装成功:

bash 复制代码
cmake --version

如果能看到 CMake 的版本信息,则表示安装成功。

四、VS Code 的安装与配置

已经有了运行 C++ 代码所需的基础环境。接下来该安装 VS Code,并配置连接到 WSL 环境。

VS Code 官方网站:https://code.visualstudio.com/ 根据操作系统(Windows)下载对应的安装包。

安装过程就不赘述了,Windows安装软件还是比较简单的。

安装好vscode,在Ubuntu的一个目录下输出code .就可以让 vscode 连接到 WSL 环境。

进入这样的界面:

现在,安装一些强大的扩展工具帮助写代码。

  • C/C++ 扩展
  • CMake Tools

Remote - WSL 扩展是 VS Code 官方提供的扩展,直接在 WSL 环境中打开文件夹,并使用 WSL 中的工具链进行编译、运行和调试。这是实现 VS Code 与 WSL 无缝连接的关键。

至此,已经完成 VS Code 的安装和基本配置,并和 WSL 环境成功连接。可以在 VS Code:

  • 编辑 C++ 代码。
  • 使用 WSL 中的 GCC/G++ 编译器编译代码。
  • 使用 GDB 调试器调试代码。
  • 使用 CMake 构建项目。

五、创建并配置 C++ 项目

VS Code 创建第一个 C++ 项目,配置编译和调试任务,让代码顺利运行起来。

首先在 WSL 环境中创建一个新的文件夹来存放 C++ 项目文件,这里先编写一个简单的"Hello World"程序。

bash 复制代码
mkdir ~/my_first_cpp_project
cd ~/my_first_cpp_project

创建 main.cpp 文件并编写代码:

cpp 复制代码
#include <iostream>

int main(int argc, char** argv) 
{
    std::cout << "Hello from WSL C++ in VS Code!" << std::endl;
    int a = 1, b = 2;
    int c = a + b;
    std::cout << c << std::endl;
    return 0;
}

5.1、配置编译任务:tasks.json

tasks.json文件定义了 VS Code 如何执行外部工具来编译代码。配置任务完成一键编译C++ 程序。

快捷键 Ctrl + Shift + P 打开命令面板。输入 Tasks: Configure Default Build Task 并选择。

对于 C++ 项目,选择 C/C++: g++ 生成活动文件。

在项目根目录下会自动创建一个 .vscode 文件夹,并生成一个 tasks.json 文件。

我比较推荐用 CMake 管理多文件项目。如果不使用 CMake,而是手动管理 tasks.json,就要修改 args 字段来包含所有源文件,并指定头文件的搜索路径。

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build all files",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "src/main.cpp",          // 明确列出所有源文件
                "src/my_function.cpp",   // 明确列出所有源文件
                "-I",                    // 添加头文件搜索路径
                "include/",              // 指向 include 目录
                "-o",
                "${workspaceFolder}/bin/my_program" // 将可执行文件输出到 bin 目录
            ],
            "options": {
                "cwd": "${workspaceFolder}" // 工作目录设置为项目根目录
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Build all C++ files in the project."
        }
    ]
}

对于任何超过几个源文件的项目,还是要使用 Make 或 CMake 来管理编译过程,手动修改tasks.json太麻烦了。

重要参数:

  • version: 任务配置文件的版本。
  • tasks: 包含所有任务定义的数组。
  • type : 任务类型,cppbuild 表示这是一个 C++ 构建任务。
  • label: 任务在 VS Code 界面中显示的名称。
  • command : 要执行的命令。这里是 /usr/bin/g++,这是 WSL Ubuntu 中 g++ 编译器的默认路径。
  • args : 传递给 g++ 命令的参数:
    • -fdiagnostics-color=always: 使诊断信息带颜色。
    • -g: 生成调试信息,这对于后续的调试非常重要。
    • ${file}: VS Code 预定义变量,表示当前打开的文件。
    • -o: 指定输出文件的名称。
    • ${fileDirname}/${fileBasenameNoExtension}: VS Code 预定义变量,表示当前文件所在的目录,以及不带扩展名的文件名。
  • options.cwd: 命令执行时的工作目录,这里设置为当前文件所在的目录。
  • problemMatcher : 用于解析编译器输出中的错误和警告,并在 VS Code 中显示。$gcc 用在 GCC/G++ 的输出。
  • group.kind : 任务组的类型,build 表示这是一个构建任务。
  • group.isDefault : 设置为 true 表示这是默认的构建任务,可以通过快捷键 Ctrl + Shift + B 直接运行。

5.2、配置调试任务:launch.json

launch.json文件定义了 VS Code 如何启动程序进行调试。告诉调试器在哪里找到可执行文件。

创建 launch.json 文件:

选择 C++ (GDB/LLDB),VS Code 会在 .vscode 文件夹中生成一个 launch.json 文件。

生成的 launch.json 包含多个配置。找到名为 "C/C++: g++ build and debug active file" 的配置(或者类似的,如果没有 preLaunchTask,就要手动添加)。

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C/C++: (g++) Launch", // 任务名称,可以自定义
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}", // 指定要调试的可执行文件路径
            "args": [],
            "stopAtEntry": false, // 是否在程序入口处停止
            "cwd": "${fileDirname}", // 程序运行的工作目录
            "environment": [],
            "externalConsole": false, // 是否使用外部终端运行程序
            "MIMode": "gdb", // 使用 GDB 调试器
            "miDebuggerPath": "/usr/bin/gdb", // GDB 调试器路径
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ build active file" // 在调试前执行的构建任务
        }
    ]
}

重要参数:

  • name: 调试配置在下拉菜单中显示的名称。
  • type : 调试器类型,cppdbg 表示 C++ 调试。
  • request : 调试请求类型,launch 表示启动程序进行调试。
  • program : 最重要的一项 。指定要调试的可执行文件的完整路径。这里使用了 ${fileDirname}/${fileBasenameNoExtension},它会指向与当前 main.cpp 同目录下、同名的可执行文件(例如 ~/my_first_cpp_project/main)。
  • args: 传递给程序的命令行参数。
  • stopAtEntry : 如果设置为 true,调试器会在程序入口点(通常是 main 函数的开始)暂停。
  • cwd: 程序运行时的工作目录。
  • externalConsole : 如果设置为 true,程序会在一个新的外部终端窗口中运行;如果设置为 false,则在 VS Code 的内置终端中运行。对于简单的控制台应用,false 更方便。
  • MIMode : 调试接口模式,gdb 表示使用 GDB。
  • miDebuggerPath : GDB 调试器的路径,通常是 /usr/bin/gdb
  • setupCommands: 调试器启动时执行的命令,例如启用 GDB 的 pretty-printing 功能,让复杂数据结构显示更友好。
  • preLaunchTask : 非常重要 。指定在调试会话开始前要运行的任务。这里我们设置为 "C/C++: g++ build active file",这会确保在每次调试前,你的代码都会被重新编译,保证调试的是最新版本。这个名称必须与 tasks.jsonlabel 的值完全匹配。

5.3、运行和调试 C++ 程序

main.cpp文件点击代码行号左侧的空白区域设置断点。会出现一个红点,程序运行到此处时会暂停。

点击左侧"运行和调试"视图顶部的绿色"启动调试"按钮(或按下快捷键 F5)。

VS Code 会首先执行 preLaunchTask 中定义的编译任务。然后启动调试器,并在设置的断点处暂停。此时,可以看到左侧的"变量"、"监视"、"调用堆栈"等面板显示了当前程序的调试信息。

这里就可以使用调试控制条进行操作:

  • 继续 (F5)。
  • 单步跳过 (F10)。
  • 单步调试 (F11)。
  • 单步跳出 (Shift + F11)。
  • 停止 (Shift + F5)。

VS Code 的"终端"面板中看到输出:

5.4、关于 c_cpp_properties.json

除了 tasks.jsonlaunch.json,VS Code 的 C/C++ 扩展还会生成c_cpp_properties.json 文件,用来配置智能感知功能。这个文件会自动配置好,识别编译器和头文件路径,不需要手动修改。只是,项目使用了特殊的库或头文件,就要在这里添加相应的 includePath

快捷键 Ctrl + Shift + P,输入 C/C++: Edit Configurations (UI)C/C++: Edit Configurations (JSON) 来查看和修改c_cpp_properties.json

c_cpp_properties.json主要控制代码补全、错误波浪线、定义跳转等功能。在 WSL 环境下,C/C++ 扩展会自动检测 WSL 中的 GCC/G++ 路径和系统头文件路径,不用手动修改。如果项目使用了特殊的库或头文件,才要在这里添加相应的 includePath

至此,已经成功在 VS Code 中创建了一个 C++ 项目,并配置了编译和调试任务。

六、CMake和多文件管理

6.1、CMake 项目集成

对于大型或跨平台的 C++ 项目,手动维护 tasks.json 来编译所有源文件会非常繁琐。有 CMake 这个强大的构建系统生成工具就不一样了,可以用简洁的 CMakeLists.txt 文件来定义项目的构建方式,然后生成适用于各种平台和工具的构建脚本。VS Code 的 CMake Tools 扩展提供了对 CMake 的一流支持。

为什么使用 CMake?

  • 跨平台: 一份 CMakeLists.txt 可以生成 Linux (Makefile)、Windows (Visual Studio)、macOS (Xcode) 等平台的构建文件。
  • 自动化处理源文件依赖、库链接、头文件搜索路径等复杂问题。
  • 模块化管理大型项目中的多个子项目和外部依赖。
  • 很多大型 C++ 项目和库都使用 CMake 进行构建。

创建一个简单的 CMake 项目

项目结构:

bash 复制代码
my_cmake_project/
├── src/
│   └── main.cpp
└── CMakeLists.txt

main.cpp 内容和前面的一样。

CMakeLists.txt 内容:

bash 复制代码
cmake_minimum_required(VERSION 3.10) # 最低CMake版本要求
project(MyCMakeProject CXX)         # 项目名称和语言

# 添加可执行文件
add_executable(my_app src/main.cpp) # 创建一个名为 my_app 的可执行文件,源文件为 src/main.cpp

VS Code 打开一个包含 CMakeLists.txt 的文件夹时,CMake Tools 扩展会自动检测到它。

  1. VS Code 底部状态栏会出现 CMake 相关的按钮。点击状态栏中的 "No Kit Selected"(或类似字样),然后选择 WSL 中的 GCC/G++ 工具链( GCC for LinuxClang for Linux)。
  2. 状态栏会显示 "Debug" 或 "Release"。可以点击它来切换构建类型(。
  3. 点击状态栏中的"Build"按钮(一个锤子图标),或者使用命令面板(Ctrl + Shift + P)输入 CMake: Build。CMake Tools 会自动在项目根目录下创建一个 build 目录,并生成 Makefile。然后会调用 make 命令来编译项目。
  4. 构建成功后,状态栏会显示可执行文件的名称。点击旁边的"Run"按钮(一个播放图标),或者 Ctrl + Shift + P -> CMake: Run。程序就会在 VS Code 的集成终端中运行。

CMake Tools 扩展会自动生成一个 launch.json 配置,可以直接调试 CMake 构建的可执行文件。

  1. main.cpp 文件的源代码设置断点。
  2. 点击左侧"运行和调试"图标(Ctrl + Shift + D)。
  3. 在顶部的下拉菜单中,选择由 CMake Tools 生成的调试配置。
  4. 点击绿色的"启动调试"按钮(或 F5)。
  5. CMake Tools 会自动处理构建和启动调试器。

6.2、多文件项目管理

项目包含多个源文件(.cpp)和头文件(.h)时,要调整编译任务。

一个常见的 C++ 项目结构:

bash 复制代码
my_multi_file_project/
├── src/
│   ├── main.cpp
│   └── my_function.cpp
├── include/
│   └── my_function.h
└── .vscode/
    ├── tasks.json
    └── launch.json

my_function.h:

cpp 复制代码
#ifndef MY_FUNCTION_H
#define MY_FUNCTION_H

void print_message();

#endif // MY_FUNCTION_H

my_function.cpp:

cpp 复制代码
#include "my_function.h"
#include <iostream>

void print_message() {
    std::cout << "This is a message from a separate file!" << std::endl;
}

main.cpp:

cpp 复制代码
#include <iostream>
#include "my_function.h"

int main() {
    std::cout << "Hello from main!" << std::endl;
    print_message(); // 调用另一个文件中的函数
    return 0;
}

如果不使用 CMake,而是手动管理 tasks.json,就要修改 args 字段来包含所有源文件,并指定头文件的搜索路径。

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build all files",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "src/main.cpp",          // 明确列出所有源文件
                "src/my_function.cpp",   // 明确列出所有源文件
                "-I",                    // 添加头文件搜索路径
                "include/",              // 指向 include 目录
                "-o",
                "${workspaceFolder}/bin/my_program" // 将可执行文件输出到 bin 目录
            ],
            "options": {
                "cwd": "${workspaceFolder}" // 工作目录设置为项目根目录
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Build all C++ files in the project."
        }
    ]
}

注意:

  • args 中列出了所有 .cpp 源文件。
  • -I include/ 告诉编译器在 include/ 目录中查找头文件。
  • "${workspaceFolder}/bin/my_program" 指定了输出可执行文件的路径和名称。要手动创建 bin 目录。
  • options.cwd 设置为 ${workspaceFolder} (项目根目录),这样相对路径 src/include/ 才能正确解析。

对于任何超过几个源文件的项目,最好还是使用构建系统(Make 或 CMake)来管理编译过程,而不是手动修改 tasks.json

  • Makefile: 可以手动编写 Makefile 来定义编译规则。然后在 tasks.json 中调用 make 命令。
  • CMake: 更现代和跨平台的工具。会自动处理源文件依赖和链接,大大的简化多文件项目的管理。

七、结语

在 VS Code 和 WSL 的强大组合下搭建的 C++ 开发环境。在 Windows 系统上直接运行一个完整的 GNU/Linux 环境,不用虚拟机或双启动。就能用上 Linux 成熟且广泛使用的工具链。

相关推荐
idontknow2332 小时前
从零开始编写 webserver (三) 线程池与数据库连接池
c++
winfreedoms2 小时前
微软商店安装的 WSL Ubuntu如何移动到其他目录下
ubuntu·microsoft·wsl
ss2732 小时前
Executors预定义线程池-正确使用姿势
linux·开发语言·python
zz_nj2 小时前
100个句子记住1500个KET单词
linux
石去皿2 小时前
C++校招通关秘籍:从高频考点到工程思维的跃迁
java·服务器·c++
挖矿大亨2 小时前
C++中的递增运算符重载
开发语言·c++
染指11102 小时前
22.全局句柄表-Windows驱动
windows·内核·句柄表
大柏怎么被偷了3 小时前
【Linux】动静态库
linux
草莓熊Lotso3 小时前
Linux 实战:从零实现动态进度条(含缓冲区原理与多版本优化)
linux·运维·服务器·c++·人工智能·centos·进度条