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.配置文件协同工作原理

提供智能感知
配置编辑器行为
触发构建
生成可执行文件
启动调试
发现问题
c_cpp_properties.json
代码编辑
settings.json
tasks.json
launch.json
调试会话

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
}

就可以完成设置。调试流程大致如下:

VSCode 调试器(GDB) 外部终端 启动调试会话 创建新终端窗口 返回终端PID 加载程序到终端 程序输出流 转发调试信息 发送调试命令 控制程序执行 返回程序状态 更新调试界面 loop [调试过程] VSCode 调试器(GDB) 外部终端

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上发表的文章也会在上面同步发表,在微信公众号上还会不定期分享自己的随笔与生活感悟,谢谢~

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐