Linux 下使用 vscode 单文件编译 C/C++ 程序

将两个配置文件 launch.jsontask.json 填入 .vscode 文件即可。

注意在 wsl2 下可以使用中文命名文件,这样可以快乐的刷算法题了(使用单文件编译)。


launch.json 文件:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C/C++", // 配置名称
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}.out",
            "args": [],
            "stopAtEntry": false,// 设为true时程序将暂停在程序入口处,相当于在main上打断点
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb", // 指定调试器所在路径,如果你的minGW装在别的地方,则要改成你自己的路径
            "preLaunchTask": "compile",// 调试开始前执行的任务,我们在调试前要编译构建。与tasks.json的label相对应,名字要一样
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

task.json 文件:

{
    "version": "2.0.0",
    "tasks": [{
            "label": "compile",// 与 launch.json 中的 label 要一样才能运行
            "command": "g++",// 要使用的编译器,c语言就是gcc,c++就是g++
            // 多文件编译需要加上这行代码。因此统一下,不管是单文件还是多文件都加上这行代码。
            "type": "shell",// 任务类型:shell相当于先打开shell再输入命令,所以args还会经过shell再解析一遍
            "args": [
                "-g", //生成和调试有关的信息
                "${file}",// 编译多文件时需要把这里修改为"${fileDirname}/*.cpp",
                "-o",// 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
                "${fileDirname}/${fileBasenameNoExtension}.out",
                "-std=c++11", // 语言标准,可根据自己的需要进行修改,写c++要换成c++的语言标准,比如c++11.14.17
                "-std=c++14", 
                "-std=c++17",
                //"-lpthread" // 加入多线程编译选项,可删除
                "-finput-charset=GBK",// 设置编译出的可执行程序中的字符是 GBK 编码
            ],
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

补充:若控制台不显示中文,则需要更改编码方式,改为 GBK 即可。

// 在 args 中加入如下编译选项即可
"-finput-charset=GBK",// 设置编译出的可执行程序中的字符是 GBK 编码

【GCC】文件保存/读入/编译时文字编/解码处理

评论区的方法可借鉴:VS Code输出窗口显示中文乱码的解决办法(汇总择优)
在这里插入图片描述