欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用VS Code和WSL搭建C++编译、调试环境

程序员文章站 2022-06-26 13:25:51
...

1. 准备

  • WSL是 Windows 10 下 的一项功能,全称Window Subsystem for Linux。简而言之,在win10下运行linux!
  • Visual Studio Code (VSCode) 是一个由微软开发的,同时支持 Windows、Linux 和 macOS 操作系统的开源文本编辑器。它支持调试,内置了 Git 版本控制功能,同时也具有开发环境功能,例如代码补全、代码片段、代码重构等。
  1. 下载安装Visual Studio Code。

下载地址:https://code.visualstudio.com/download

  1. 安装win10 应用商店中的Ubuntu,在ubuntu中执行下面的命令来安装g++和gdb。
sudo apt-get install g++
sudo apt-get install gdb
  1. 打开VSCode的终端,输入bash回车,终端即变成1:wsl,即可编译c++程序。

2. 修改VSCode的默认shell

  • 为了不用每次都重复上述的改变终端操作。
  1. 在VSCode的用户设置中加入以下代码:
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\wsl.exe"
  1. 打开VSCode的终端,终端默认为1:wsl

3. 建立编译的task

  • 新建一个task.json文件,该task的目的是编译程序(带调试信息),为后面做准备。
  1. 在工作文件夹中右键,选择Open with Code
  2. ctrl+shift+p,打开命令行,输入Tasks: Configure Task,选择使用模板创建task.json文件
  3. task.json中的内容替换为如下代码:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",                     //task.json文件的语言版本
    "windows": {
        "options": {
            "shell": {
                "executable": "wsl.exe",    //修改task执行的shell为WSL
                "args": []
            }
        }
    },
    "tasks": [
        {
            "label": "compile",     //自定义task的名字,在launch.json中会用到
            "type": "shell",        //指下方的command为shell命令
            "command": "g++",       //command和args在一块表示了:g++ -std=c++11 -g *.cpp
            "args": [
                "-std=c++11",       //使用c++11标准编译
                "-g",               //带调试信息的编译
                "*.cpp"             //编译所有.cpp文件
            ],
            "group": {
                "kind": "build",    //此task分在build组中
                "isDefault": true
            }
        }
    ]
}
  1. 配好了之后可以用快捷键ctrl+shift+b 运行这个task。注意这个快捷键只认分在build组的task。否则需要ctrl+shift+p输入Tasks: Run Task,然后选择相应的task.

4. 建立调试环境

  1. task.json同一目录下新建launch.json文件,输入以下内容:
{
    "version": "0.2.0",                 //launch.json文件的语言版本
    "configurations": [
        {
            "name": "C++ Launch",       //自定义名称
            "type": "cppdbg",
            "request": "launch",
            "preLaunchTask": "compile", //链接到之前的task.json
            "program": "a.out",         //task编译所产生的文件
            "args": [
                "-fThreading"
            ],
            "stopAtEntry": false,
            "cwd": "/mnt/d/CppCode/cppCode/mine",   //current working directory 当前工作目录,用wsl的格式写
            "environment": [],
            "externalConsole": true,
            "windows": {
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            },
            "pipeTransport": {
                "pipeCwd": "",
                "pipeProgram": "c:\\windows\\sysnative\\bash.exe",
                "pipeArgs": [
                    "-c"
                ],
                "debuggerPath": "/usr/bin/gdb"
            },
            "sourceFileMap": {
                "/mnt/d/CppCode/cppCode/mine": "${workspaceFolder}"    //将cwd中的目录改写为windows的格式
            }
        }
    ]
}
  1. 至此大功告成。按F5即可进行调试。

5. 总结

  1. 直接编译运行,则打开终端。默认的终端是1:wsl。输入以下命令即可:
g++ -std=c++11 temp.cpp
./a.out
  1. 若需要调试,按F5即可进行调试。