关于 VScode 配置C/C++编译环境的一点经验
插件方面只需要有一个 Code runner 就行了,不需要那个 C/C++ Compile Run 或者 C/C++ Runner
配置文件只需要顶层目录创建一个 .vscode文件,然后在此文件下创建 tasks.json 和 launch.json文件就行了
配置好之后按F5可进行调试
1. launch.json 文件
json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}\\output\\${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
"environment": [],
"externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "G:\\software\\MinGW\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
launch.json文件主要是配置调试CPP文件时需要的
主要注意以下几行的修改就行:
json
// 将要进行调试的程序的路径
//(原来是workespaceFolder:定位到当前工作目录
// 现在改为fileDirname:定位到当前运行的文件所在目录)
// 这样做的好处就是可以控制输出文件都放到一个文件夹里
// 比如我的目录,可以分为 LeetCode 和 Test 目录里面的CPP文件输出的可执行文件都在自己的对应目录的output目录下不会掺杂在一起显得混乱
G:\VS_CODE\PROJECT
├───Test
│ ├───output
│ │ ├───1.exe
│ │ └───2.exe
│ ├───1.cpp
│ └───2.cpp
└───LeetCode
├───output
│ ├───3.exe
│ └───4.exe
├───3.cpp
└───4.cpp
"program": "${fileDirname}\\output\\${fileBasenameNoExtension}.exe",
// 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
"cwd": "${fileDirname}",
json
// 设为true时程序将暂停在程序入口处,一般设置为false
"stopAtEntry": false,
// miDebugger的路径,注意这里要与 MinGw 的路径对应(设置成自己安装的MinGW下bin目录的路径)
"miDebuggerPath": "G:\\software\\MinGW\\MinGW\\bin\\gdb.exe",
// 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
//(这里和tasks.json文件的 "label": "g++" 相同就行,就是后半部分的引号 "g++" 那一块要相同)
"preLaunchTask": "g++",
效果如图:
2. tasks.json 文件
json
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "g++",
"command": "G:\\software\\MinGW\\MinGW\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"-std=c++11",
"${file}",
"-o",
"${fileDirname}\\output\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "调试器生成的任务"
}
]
}
tasks.json文件主要注意以下几行:
json
//(这里和launch.json文件的 "preLaunchTask": "g++" 相同就行,就是后半部分的引号 "g++" 那一块要相同)
"label": "g++",
//command的路径注意这里要与 MinGw 的路径对应(设置成自己安装的MinGW下bin目录的路径)
"command": "G:\\software\\MinGW\\MinGW\\bin\\g++.exe",
json
// 在里面添加 -std=c++11 可以支持C11,C17,C20同理
"args": [
"-fdiagnostics-color=always",
"-g",
"-std=c++11",
"${file}",
"-o",
// 这里的文件路径也要注意和 launch.json 里的
// "program": "${fileDirname}\\output\\${fileBasenameNoExtension}.exe"相对应
"${fileDirname}\\output\\${fileBasenameNoExtension}.exe"
],
"cwd": "${fileDirname}"