这篇文章讨论一下VSCode配置C++的方法,重点要讨论的是tasks.json和launch.json这两个配置文件,所以很多基础内容会直接略过。

一.环境准备

1.安装MinGW-w64。为啥要装MinGW-w64?因为VSCode只是个编辑器,MinGW-w64包含了gcc编译器和gdb调试器。

2.安装VSCode。

3.安装VSCode的C/C++扩展。

好了,完成。

二.编写代码

1.先看目录结构。

image.png

很简单对不对。

2.然后看看代码。

//demo.h

void Print(void);
//demo.cpp

#include"demo.h"

#include<iostream>

void Print(void)
{
    std::cout<<"hello world"<<std::endl;
}
//main.cpp

#include"demo.h"

int main(int argc, char *argv[])
{
    Print();

    return 0;
}

也非常简单对不对。

三.直接利用gcc以及gdb编译调试

为什么要利用gcc和gdb进行编译调试?不是要讨论VSCode配置C++环境吗?因为要讲清楚tasks.json和launch.json内容编写的思路。

1.在VSCode中打开一个终端,输入命令g++ -g main.cpp ./src/demo.cpp -I ./include/ -o main.exe

image-1.png

现在可以看到生成了main.exe可执行程序。

image-2.png

2.接着就可以gdb调试了。

四.配置tasks.json和launch.json

重点来了,先说一下这两个文件是干嘛的。可以这么理解,tasks.json对应gcc,用来配置如何生成main.exe,launch.json对应gdb,用来配置如何调试main.exe。

1.先看一下tasks.json的内容。

//tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",//任务名称
            "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",//编译器所在的位置
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "main.cpp",
                "./src/demo.cpp",
                "-I",
                "./include/",
                "-o",
                "${workspaceFolder}\\main.exe"
            ],//编译参数
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "编译器: \"C:\\Program Files\\mingw64\\bin\\g++.exe\""
        }
    ]
}

比较重要的字段已经写好了注释,label是指任务名称,command是指要使用的编译器所在的位置,args是指编译参数,是不是发现args的内容和刚才直接gcc编译时的参数很像,很对,这个args就是gcc编译参数。

2.接着看一下launch.json的内容

//launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\main.exe",//可执行程序的位置
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe",//调试器所在的位置
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"//前置任务的名称
        }
    ]
}

比较重要的字段已经写好了注释,program是指要调试的可执行程序所在位置,也就是tasks.json生成的目标程序所在位置,miDebuggerPath是指要使用的调试器所在的位置,preLaunchTask是指前置任务名称。是不是发现这个preLaunchTask和tasks.json里的label是一样的,很对,就是一样的,而且必须一样。这个表示在执行调试任务之前,要先执行生成任务。这样VSCode就会先生成可执行程序,然后启动调试。

配置思路是不是打开了。

3.配置完成,F5调试。

五.其他

1.可以看一下json文件的格式,会有帮助,而且json文件这么主流。

2.很多文章里提到c_cpp_properties.json,其实这个配置文件可以不写,tasks.json的args字段才是编译时真正用到的,当然这个写了对智能提示有帮助,方便。

3.如果是一些简单的项目,使用这种构建方法还是可以的,但是复杂项目还是安装cmake扩展,使用cmake比较好。


程序员长弓
1 声望0 粉丝