使用GCC和MinGW为VSCode配置C/C++开发环境(Windows)(三)
6.通过 c_cpp_properties.json 添加其他 C/C++ 设置
如果我们想更好地控制 C/C++ 扩展,可以创建一个 c_cpp_properties.json 文件,该文件将允许我峨嵋你更改编译器路径、包含路径、C++标准(默认为 C++17)等设置。
我们可以通过从命令面板 (Ctrl+Shift+P) 运行命令 C/C++: 编辑配置(UI) 来查看 C/C++ 配置 UI。
这将打开 C/C++ 配置 页面。在此处进行更改时,VS Code 会将其写入 .vscode 文件夹中名为 c_cpp_properties.json 的文件。
在UI界面中对每一项配置都作出了较为详细的说明,经过对照也很容易找到在c_cpp_properties.json中与之相对应的内容,因此笔者不再过多赘述。但是笔者认为有必要关注一下includePath(即包含路径),里面的内容就是 C/C++ 扩展的头文件搜索路径,如果我们引用了第三方库的话,那么我们应该把第三方库路径写进去。同时需要注意的是VS Code官方文档中有一条提示:仅当您的程序包含不在工作区或标准库路径中的头文件时,才需要添加到“ 包含路径数组”设置中。强烈建议不要将系统包含路径添加到我们支持的编译器的 includePath 设置中。意思应该是官方不推荐将他们支持的编译器的标准库路径写入 includePath 设置中。
7.通过 settings.json 修改工作区设置
settings.json的功能是配置编辑器行为和扩展设置,覆盖用户全局设置。一般情况下不会自动生成,也不需要修改。与c_cpp_properties.json类似,我们也可以通过UI界面直接修改settings.json文件。
先Ctrl+Shift+P调出命令面板,之后输入Preferences: Open Workspace Settings,打开
之后按照说明和自己的需要来进行设置就行。
7.配置文件协同工作原理
8.实现在调试时程序在一个独立的外部终端窗口中运行的效果
我们有时希望在调试时,程序在一个独立的外部终端窗口中运行(类似于单独启动的应用程序),而不是在 VSCode 内置终端中运行。以下是配置解决方案:
①核心配置修改(launch.json)
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true, // 关键配置:启用外部控制台
"preLaunchTask": "C/C++: g++.exe 生成活动文件", // 关键配置:设置前置任务
"MIMode": "gdb",
"miDebuggerPath": "D:\\msys64\\ucrt64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
}
]
}
②辅助配置(settings.json)
{
// 配置外部终端行为
"terminal.external.windowsExec": "wt.exe", // 使用 Windows Terminal
"terminal.external.windowsOptions": "--window new",
// 或者使用经典 cmd:
// "terminal.external.windowsExec": "cmd.exe",
// "terminal.external.windowsArgs": ["/k"],
// 调试器集成设置
"debug.terminal.clearBeforeReusing": false,
"debug.internalConsoleOptions": "neverOpen",
// 解决外部终端中文乱码
"terminal.integrated.env.windows": {
"LANG": "zh_CN.UTF-8",
"PYTHONIOENCODING": "utf-8",
"CHCP": "65001"
},
// 禁用内部终端自动弹出
"debug.allowBreakpointsEverywhere": false
}
就可以完成设置。调试流程大致如下:
9.解决中文路径问题
有时我们会遇到这种情况:由于 Windows 用户名包含中文字符,导致 g++ 在编译时生成的临时文件路径包含中文,从而引发编码问题。有一种相对安全的解决方案是在 VSCode 中覆盖临时路径。
①在当前项目文件夹下创建一个名为Temp的文件夹:
②修改tasks.json文件
添加以下配置:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "d:\\msys64\\ucrt64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
// 关键:强制指定临时目录
"-B", "${fileDirname}\\Temp", // 临时文件目录
"-pipe" // 减少磁盘临时文件使用
],
"options": {
"cwd": "d:\\msys64\\ucrt64\\bin",
"env": {
"TMP": "${fileDirname}\\Temp", // 覆盖临时目录
"TEMP": "${fileDirname}\\Temp"
}
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
结语
至此,我们使用GCC和MinGW为VSCode配置C/C++开发环境(Windows)的系列就结束了。下一篇笔者打算以C++“准”标准库Boost为例,研究如何在VS Code中进行C++开发时引用第三方库。各位读者可以关注一下笔者的微信公众号:江澜的代码空间,在CSDN上发表的文章也会在上面同步发表,在微信公众号上还会不定期分享自己的随笔与生活感悟,谢谢~
更多推荐


所有评论(0)