vscode配置文件
task就是编译文件的指令,可以理解为执行g++命令。
lunch是调试命令,可以理解为对编译好的文件夹执行gdb命令。
单文件调试编译,做题时常用
task.json
{
"tasks": [
{
"type": "cppbuild",
"label": "Build",
"command": "F:\\mingw64\\bin\\g++.exe", //本地g++,用g++编译
"args": [
"-fdiagnostics-color=always",
"-g", //可调试
"${file}", //只编译当前文件
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe" //生成可执行文件名就是当前文件的名字.exe
],
"options": {
"cwd": "${fileDirname}" //编译的时候切换到文件所在目录
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
lunch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\Maintest.exe", //要调试的可执行文件名
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}", //执行调试时切换到工作区的目录
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "F:\\mingw64\\bin\\gdb.exe",// 自己电脑的gdb
"preLaunchTask": "Build",//这里和task.json的label相对应
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
用cmake多文件编译
lunch.json都一样
task.json如下
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build" //执行时切换到工作空间下面的build目录(外部构建)
},
"tasks": [ //执行的任务组tasks
{ //第一个任务
"type": "shell", //在shell中执行cmake命令
"label": "cmake",
"command": "cmake",
"args": [ //cmake参数,..是外部构建
"..",
"-G MinGW Makefiles" //windows下用MinGW的makefile生成可调试文件
],
},
{ //第二个任务
"label": "make",
"command": "mingw32-make", //Windows下的make命令
"args": [
"-I include F:\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\8.1.0\\include" //参数 -I包含头文件include文件夹,和编译器的include文件夹
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "Build", //Build和lunch中是对应的,表示lunch调试前会先执行这个Build任务,而Build又依赖于上面cmake和make两个任务,并且先执行cmake再执行make任务。
"dependsOrder": "sequence",
"dependsOn":[
"cmake",
"make"
]
}
]
}