VScode编译C++的配置文件
VScode编译C++配置
VScode如果配置好了编译器,比如g++(windows就是mingw64或者mscv)
只需要配置好launch.json
和task.json
文件即可。
launch.json
是调用配置好的带调试信息的exe文件进行debug,task.json
一般是编译生成exe文件的步骤。
launch.json
文件
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe build active file"
}
]
}
- 其中
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
表示可执行的调试文件。 "preLaunchTask": "C/C++: g++.exe build active file"
表示生成可执行的main.exe
的任务,这个指令其中的名字匹配的是下面的task.json
文件中的label
,就是C/C++: g++.exe build active file
,他主要的作用就是执行编译生成可调试文件的命令g++ -g .\main.cpp -o main.exe
task.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "C:\\Program Files\\x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev0\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
如果使用cmake或者g++自己编译了多个文件,这个办法就不可以使用,这个只能编译单个文件,这时候如果修改launch.json
文件中的"program",然后注释掉"preLaunchTask": "C/C++: g++.exe build active file"就可以用自己的命令生成的exe文件继续调试了。
但是由于这样是用F5不会重新编译文件,所以最后无法使用费F5及时的随时调试新的文件。
如果想配置的话有两种方法:
- 使用g++进行编译
- 是用cmake进行编译
launch.json
中各标签解释
name
代表这个tasks.json中这个任务的名字request
代表调试模式,有launch和attach两种,后者适用于不停止的程序program
代表这个可执行文件args
代表这个可执行文件执行时可以选择的参数cwd
代表这个可执行文件当前的目录下miDebuggerPath
代表调试器的路径,这里用的是gdb