前言:本文通过整合各博客内容形成一套自己尝试后可行的配置方法。
1、下载VScode及MinGW编译器
依照VSCode配置C/C++环境博客1章节——5.2章节设置。
2、设置编译C++代码的脚本:
依照VScode tasks.json和launch.json的设置,设置tasks.json和launch.json两文件。 本文重点介绍这两文件,附上各命令的解释:
// tasks.json文件的设置:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build", // 任务名字:Build 注意是大小写区分的,等会在launch中调用这个名字
"type": "shell", // 任务类型:shell命令
"command": "g++.exe", // 任务执行的命令: g++
//"command": "D:\\Programs\\mingw-w64\\mingw64\\bin\\g++.exe", // 任务执行的命令: g++
"args": [ // 任务命令的参数:
"-fdiagnostics-color=always",
"'-Wall'", // 编译后显示所有告警
"'-std=c++17'", //使用c++17标准编译
"-g", // 添加gdb调试信息
"'${file}'", //当前文件名
"-o", //对象名,不进行编译优化
"${workspaceFolder}\\bin\\${fileBasenameNoExtension}.exe"
],
// 所以以上部分,就是在shell中执行(假设文件名为filename.cpp)g++ -g filename.cpp -o bin/filename.exe
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc" // 使用gcc捕获错误
],
"group": {
"kind": "build",
"isDefault": true
// 任务分组,因为是tasks而不是task,意味着可以连着执行很多任务
// 在build组的任务们,可以通过在Command Palette(F1) 输入run build task来运行
// 当然,如果任务分组是test,你就可以用run test task来运行
},
// "detail": "编译器: D:\\Programs\\mingw-w64\\mingw64\\bin\\g++.exe"
}
]
}
// launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "test_code", // launch任务的名字:test_code
"preLaunchTask": "Build", //在launch之前运行的任务名:这个名字一定要跟tasks.json中的任务名字大小写一致
"type": "cppdbg", // 配置类型:只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceFolder}/bin/${fileBasenameNoExtension}.exe", // 任务程序的路径名称:需要运行的是当前打开文件的目录中,名字和当前文件相同,但扩展名为exe的程序
"args": [], // 程序传递的参数:一般设为空即可
"stopAtEntry": false, // 程序在入口是否停止:选为true则会在打开控制台后停滞,暂时不执行程序
"cwd": "${workspaceFolder}", // 调试程序时的工作目录:一般为${workspaceFolder},即代码所在目录
"environment": [],
"externalConsole": false, // 输出窗显示形式:true显示外置的控制台窗口,false显示内置终端
"MIMode": "gdb",
//"miDebuggerPath": "D:/Programs/mingw-w64/mingw64/bin/gdb.exe", // miDebugger的路径:和MinGW的路径对应
"miDebuggerPath": "gdb.exe", // miDebugger的路径:和MinGW的路径对应
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}]
}
3、扩展:编译多个CPP文件:
以下这部分是扩展的,以上内容已实现对于单个cpp文件的编译,满足日常调试。 以下为设置一套工程,只要理解了第二小结的内容,就可以读懂下面这篇文章。 参考:vscode一键配置C/C++多个C及CPP文件编译与tasks.json和launch.json原理,我还没尝试,初步看了是可行的。
额外参考资料: 1、cmake中加入gdb调试
|