Linux 下使用 vscode 单文件编译 C/C++ 程序
将两个配置文件 launch.json 和 task.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 编码
评论区的方法可借鉴:VS Code输出窗口显示中文乱码的解决办法(汇总择优)
