安装编译工具链

  • 安装编译工具
    sudo apt update
    sudo apt-get install build-essential gbd
    sudo apt-get install cmake
  • 验证是否安装成功
    gcc --version
    g++ --version
    gbd --version
    cmake--version

安装Vscode插件

  • 首先通过remote_wsl连接WSL2
  • 在连接WSL的状态下安装C++、Cmake、CmakeTools等一系列工具

创建工程

  • 创建如下目录
     Projects
     └── Demo
         ├── include
         │   └── HelloWorld.h
         ├── main.cpp
         └── src
             └── HelloWorld.cpp
     其中Projects为工作空间,Demo为项目
    
  • F5选择工具链即可进行编译运行,但此时会报错,因为此时我们没有告诉vscode如何编译和调试程序

更改Tasks.json

  • 通过ctrl+shift+p打开命令窗口,输入Configure Default Build Task,并选择g++,即可在.vscode文件夹中看到Tasks.json文件。Tasks文件一般用于编译程序。
  • args数组包含将传递给 g++ 的命令行参数(必须按照编译器预期的顺序指定)。类似于在命令行中运行g++ -g.. -o.. -I..的命令。
  • -g表示待编译的活动文件,对它进行编译。这里指工作空间/Demo下所有的.cpp文件
  • -o表示在文件被编译后生成与活动文件同名无后缀的可执行文件${fileDirname}/${fileBasenameNoExtension}
  • -I表示编译程序按照-I指定的路进去搜索头文件。这里指工作空间/Demo/include下所包含的头文件
        "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${workspaceFolder}/Demo/**.cpp",//编译Demo目录下所有.cpp文件
        "${workspaceFolder}/Demo/src/**.cpp",//编译Demo/src目录下所有.cpp文件
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}",
        //添加如下内容以启用多文件编译
        "-I",
        "${workspaceFolder}/Demo/include",//头文件目录
        "-pthread"
    ],
    

生成launch.json

  • 通过ctrl+shift+p打开命令窗口,输入g++ build and debug active file,自动生成launch.json文件。launch文件一般用于调试程序。
{
    "configurations": [
        {
            "name": "C/C++: g++ 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ 生成活动文件",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ],
    "version": "2.0.0"
}
  • 点击F5即可进行build & debug

reference

linux 下 g++编译程序时,-I(大写i) 与-L(大写l)-l(小写l) 的作用
详解Linux下使用vscode编译运行和调试C/C++