%% # 纲要 > 主干纲要、Hint/线索/路标 # Q&A #### 已明确 #### 待明确 > 当下仍存有的疑惑 **❓<font color="#c0504d"> 有什么问题?</font>** # Buffer ## 闪念 > sudden idea ## 候选资料 > Read it later > 跑单个测试推荐 **C++ TestMate** 它可以实现 catch2/gtest 的精确文件跳转。 > 跑完测试的覆盖率可以用 [Coverage Gutters - Visual Studio Marketplace](https://link.zhihu.com/?target=https%3A//marketplace.visualstudio.com/items%3FitemName%3Dryanluker.vscode-coverage-gutters) 进行查看。 %% # VSCode 配置 C/C++ 开发环境 基本配置说明可参见 VSCode 官方文档[^1]。 涉及到的相关插件列表如下,其中 **"C/C++ Extention Pack"** 为基本必选项,在 VSCode 中提供了对 C/C++ 的基本支持。 ![[05-工具/VSCode/VSCode 通用插件说明及配置#C++相关|VSCode 通用插件配置]] > [!备注说明] > VSCode 本身只是编辑器,**通过调用"命令行工具"来实现开发流程**,其**本身并不包含 C/C++编译器&调试器**。 > > 因此需要自行在电脑上安装好 C++**编译器/调试器**并在 VSCode 中配置这些工具的所在路径。 > > ![image-20231212135702872|450](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-A995429DC2AF420F75B5BEF85333AD99.png) > <br><br> ## 基本配置文件 在 VSCode 中配置 C/C++开发环境涉及到的文件如下: ![image-20231212140013278|500](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-D7F07A3E17E9B960DB31F0BCFC34AC0A.png) > [!NOTE] `launch.json` 与 `tasks.json` 是 VSCode 本身固有的配置文件,二者通常组合使用,实现编译型语言的**自动编译+自动执行** - `tasks.json`: 用于配置 "**编译任务**"——调用编译工具如 gcc 来执行编译命令,可供 `launch` 项调用 - `launch.json`:用于配置**调试&运行可执行文件**,其配置项中可**关联 `task.json` 中的编译任务**,实现**自动编译+自动执行** - `c_cpp_properties.json`:此为 **C/C++ 官方插件的配置文件**,用以**配置头文件路径及编译器路径**,从而提供 IntelliSense 功能。 - 在使用 `clangd` 插件后,**该项配置文件可以移除**,不再需要。 <br> ## 配置文件修改说明 - 在 `tasks.json` 中需要配置**C/C++文件的编译任务**,包括编译器路径、编译命令及参数等。 - 在 `launch.json` 中需要配置**C/C++文件调试运行的启动项**,包括可执行文件路径,使用的调试器以及调试器路径 #### 在 `tasks.json` 文件中配置 C/C++ 编译任务 示例: ```json { "version": "2.0.0", "tasks": [ // 单文件编译 { "type": "cppbuild", // 任务类型 "label": "C/C++: g++.exe build active file", // 任务label "command": "D:\\Program Files\\MinGW\\mingw64\\bin\\g++.exe", // 命令 "args": [ // 命令参数 "-fdiagnostics-color=always", "-std=c++14", "-g", // 编译时生成调试信息 "${file}", // 编译当前激活文件 "${workspaceFolder}\\88-My_Utility\\lib\\*.cpp", "-o", "${workspaceFolder}\\tmp\\tmp.exe", "-I", "${workspaceFolder}\\88-My_Utility\\include", ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true // 指定为默认任务. }, "detail": "g++: compile current active file", // 任务详细描述. 将显示在任务列表中. "presentation": { // 终端面板行为 "echo": true, // 是否在终端中回显执行的命令 "reveal": "always", // 运行任务时总是在前台显示终端面板. "focus": false, // 终端是否被聚焦 "panel": "dedicated", // 终端专用于特定任务,如果再次执行该任务,则重用终端。不同任务的输出将显示在不同终端实例中。 "showReuseMessage": true, // 显示"终端将被任务重用, 按任意键关闭它"消息 "clear": true // 执行此任务前清除终端内容 } }, ], } ``` #### 在 `launch.json` 文件中配置 C/C++ 调试启动项 配置说明参见[^2] 基本项: - `name`:该启动配置项的名称。 - `type`:调试器类型。 - 对于 GDB 或 LLDB,为 `cppgdb`; - 对于 VS Windows Debugger,为 `cppvsdbg`; - `request`: 请求类型,`launch` 或 `attach`。 配置 VSCode 调试器行为: - `preLaunchTask`:在调试会话启动前**所需执行的任务**。该属性的值对应于 `tasks.json` 文件中定义的任务的 `label` 属性。 - `postDebugTask`:在调试会话结束时**所需执行的任务**。该属性的值对应于 `tasks.json` 文件中定义的任务的 `label` 属性。 - `program`:启动调试时,所需运行的**可执行文件的路径**。 - `externalConsole`:调试时是否启用外部控制台(例如 Windows 下的 CMD 窗口)。为 `false` 时,将使用 VSCode 的集成终端。 - `avoidWindowsConsoleRedirection`:为了在 Windows 上支持 **VSCode 集成终端搭配 gdb**,插件添加了控制台重定向命令作为调试参数,从而**让控制台输入和输出显示在集成终端**中,对应默认选项 `false`。如果设置为 `true`,将禁用该功能。 - `logging`:可选标志,用于确定应该将哪些类型的消息记录到调试控制台。具体选项参见说明文档。 - `additionalSOLibSearchPath`:指示 GDB 或 LLDB 搜索 `.so` 文件的额外路径。 配置目标程序: - `args`:传递给程序的参数 - `environment`:环境变量 - `cwd`:当前工作目录(用于查找依赖项或其它文件,一般设置为 `${workspaceFolder}`) 配置 GDB 或 LLDB: - `MIMode`:指定 VS Code 将连接到的**调试器**,只能是 `gbd` 或 `lldb`。 - `miDebuggerPath`:调试器所在的路径 - `miDebuggerArgs`:传递给调试器的额外参数 - `stopOnEntry`:程序启动后立即触发中断(用于 `launch` 的情况) - `stopAtConnec`:调试器连接到目标程序立即出发中断(用于 `attach` 的情况) - `setupCommands`:设置 GDB 或 LLDB 而要执行的命令(JSON 数组形式) - `launchCompleteCommand`: 调试器设置完成后所需执行的命令,用以运行目标进程。<br>可选项为 `exec-run`,`exec-continue`,`None`,默认为 `exec-run`。 设置示例: ```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": "C/C++ (Single File)", // 配置名称,将会在启动配置的下拉菜单中显示 "preLaunchTask": "C/C++: g++.exe build active file", //与tasks.json中任务的label一致 "type": "cppdbg", // 配置类型. 对C++而言是`cppdbg`; "request": "launch", // 请求类型,为launch或attach "program": "${workspaceFolder}\\tmp\\tmp.exe", // 启动调试时,所需运行的可执行文件的路径。 "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可 "stopAtEntry": false, // 是否在程序入口处触发中断,一般设置为false. "cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceFolder} "environment": [], // 环境变量 "externalConsole": true, // 调试时是否启用外部控制台(例如Windows下的CMD窗口) "MIMode": "gdb", // 使用的调试器 "miDebuggerPath": "D:\\Program Files\\MinGW\\mingw64\\bin\\gdb.exe", // 调试器所在路径 "setupCommands": [ // 调试器设置命令 { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", // 为gdb启用整齐打印 "ignoreFailures": true, } ] }, ] } ``` ## 配置示例 为下述调试命令,在 `launch.json` 中配置对应的启动项: - 运行程序:`/home/yht/Projects/ics2023/nemu/build/riscv32-nemu-interpreter --log=/home/yht/Projects/ics2023/nemu/build/nemu-log.txt` - 调试程序:`gdb -s /home/yht/Projects/ics2023/nemu/build/riscv32-nemu-interpreter --args /home/yht/Projects/ics2023/nemu/build/riscv32-nemu-interpreter --log=/home/yht/Projects/ics2023/nemu/build/nemu-log.txt` ```json title: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": [ // 调试nemu // 针对命令`gdb -s /home/yht/Projects/ics2023/nemu/build/riscv32-nemu-interpreter --args /home/yht/Projects/ics2023/nemu/build/riscv32-nemu-interpreter --log=/home/yht/Projects/ics2023/nemu/build/nemu-log.txt` { "name": "Debug", // 配置名称,将会在启动配置的下拉菜单中显示 // "preLaunchTask": "", //与tasks.json中任务的label一致 "type": "cppdbg", // 配置类型. 对C++而言是`cppdbg`; "request": "launch", // 请求类型,为launch或attach "program": "${workspaceFolder}/nemu/build/riscv32-nemu-interpreter", // 启动调试时,所需运行的可执行文件的路径。 "args": [ "--log=/home/yht/Projects/ics2023/nemu/build/nemu-log.txt", ], // 程序调试时传递给程序的命令行参数,一般设为空即可 "stopAtEntry": false, // 是否在程序入口处触发中断,一般设置为false. "cwd": "${workspaceFolder}/nemu", // 调试程序时的工作目录,一般为${workspaceFolder} "environment": [], // 环境变量 "externalConsole": false, // 调试时是否启用外部控制台(例如Windows下的CMD窗口) "MIMode": "gdb", // 使用的调试器 "miDebuggerPath": "/usr/bin/gdb", // 调试器所在路径 "miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /bin/gdb -q --interpreter=mi", // 远程开发环境下, 清除终端输出后附加的调试信息 "setupCommands": [ // 调试器设置命令(用以在调试器运行后进行的) { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", // 为gdb启用整齐打印 "ignoreFailures": true, }, { "description": "Load symbols from file", "text": "symbol-file ${workspaceFolder}/nemu/build/riscv32-nemu-interpreter", // 为gdb启用整齐打印 }, ] }, ] } ``` ## 配置相关的问题 #### 实现多文件编译 实现多文件编译,可在 `tasks.json` 中如下配置,**将当前 `.cpp` 文件所在目录的所有 `.cpp` 源文件一起编译**。 这只适用于**所有源文件、头文件放在同一个目录**的情况。如果要区分目录,得用 cmake。 ![image-20230913135518738|453](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-8D03942ACFF6D5FDB10F86C67947A611.png) 其它思路:设置一个 launch 项的前置任务为**执行 cmake 配置和构建**,这样只需手动修改 CMakeLists. txt 即可。 #### GDB 不能识别中文 **GDB 无法调试路径中包含中文的程序**,这是**GDB 本身的问题**[^9]。 ###### 解决方案 配置 `tasks.json` 将编译生成的可执行文件统一放到**一个无中文名路径的目录**,再配置 `launch.json` **运行该目录下的可执行文件**。 例如设置生成可执行文件的路径为 `${workspaceFolder}\\tmp\\tmp.exe
,其中 `${workspaceFolder}` 本身所处路径也不能带中文。 <br><br><br> # 配置 C++ 远程开发环境 #### VSCode 运行/调试 C++程序时,终端输出后附加一串信息的解决办法 解决方案:在 `launch.json` 中添加如下信息: `"miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /bin/gdb -q --interpreter=mi"` 参见: - [如何让vscode C++ 终端不再显示调试启动信息 - 白叶Stuart - 博客园](https://www.cnblogs.com/BYGAO/p/14593308.html) - [c++ - I'm unable to debug projects using VS Code on Linux after updating to 1.30 - Stack Overflow](https://stackoverflow.com/questions/53795726/im-unable-to-debug-projects-using-vs-code-on-linux-after-updating-to-1-30) > ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-B2A780A59CB7B15D11C4B9606FB3C2B1.png|750]] #### 设置特定于远程环境的配置 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-99A23B413B57475841C84AB5A2911C75.png|350]] <br><br><br> # C/C++ 微软官方插件包 该插件包中包含以下四个插件: - **`C/C++` 插件** - **`C/C++ Themes` 插件** - **`CMake` 插件**: 提供 CMake 语言支持,即 `CMakeLists.txt` 文件中的**代码提示、代码高亮**等 - **`CMake Tools` 插件**:在 VSCode 中使用 CMake 构建项目(需要电脑上已安装有 CMake) ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-221758CA3D1CAE98AACF9399C1D77038.png|775]] 实际上会自动地一共安装 5 个插件,即 `C/C++ Extention Pack` 本身以及其所包含的上述 4 个插件。 ## 插件功能 C/C++ 官方插件本身提供以下功能[^3]: - **语法高亮**(Syntax Highlighting / Colorization) :为类、函数、变量等提供不同的颜色。 - **智能感知 | 补全**(IntelliSense / Smart Completions):C/C++插件基于 VSCode 自身的 IntelliSense 功能,提供 "C++特有的信息" - 代码补全(Code Completion) - 参数信息(Parameter Info) - 代码动作(Code Actions;Quick Fixes):对警告或错误的代码建议,以灯泡图标显示 - 快速信息(Quick Info) :悬停预览,鼠标悬停(hover)在符号上时,内联浮窗显示相关信息 - 显示成员列表(List members) - 定义预览窗(Peek Defitinion) —基于 VSCode 自身 Peek 功能 - **代码导航**(Code Navigation) - **错误检查**(error checking) - **代码格式化**:插件 **==内置 `clang-format`==**,支持对 C/C++代码进行指定风格的格式化 > [!NOTE] 关于代码导航 > > 在 VSCdoe 本身提供的代码导航功能之上,C/C++插件进一步扩展了功能,这些功能由**存储在本地符号信息数据库**中的**标签**提供。 > 安装 C/C++插件后,当**一个包含 C++源文件的文件夹被加载到 VSCode 中**时,就会生成这一数据库。 > > 当标记解析器生成此信息时,数据库图标会出现在活动配置名称 (下图中的“Win32”) 旁边。 > ![The platform indicator during tag parsing|351](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-5552CCA25679276961B1C37EC093CB1F.png) > > 当所有的符号都被标记完成后,该图标就会消失,如下: > ![image-20231213120814122|352](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-4725F48F0153FAE15AFCD86D61C44C7B.png) > > > <br> ## 插件配置文件——`c_cpp_properties.json` C/C++ 官方插件的配置文件为 `${workspaceFolder}/.vscode/c_cpp_properties.json` [^4] 该插件涉及的配置项有: - **头文件包含目录** - **编译器路径** - **语言标准** - **宏定义** C/C++插件将根据其中设置的 "**头文件包含目录**" 以及 "**编译器路径**" 推断**C++标准库头文件**所在位置,从而知道在哪里可以找到代码中引用的头文件,进而**提供 "智能感知" 和 "转到定义" 等导航功能**。 #### 修改配置文件 配置说明参见 [^5] [^6]。 可通过命令面板打开 C/C++ 插件的配置面板。**修改过的配置项将会保存到插件配置文件 `/.vscode/c_cpp_properties.json` 中** ![image-20230912000956664|500](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-78E6D0A3937650467F288911BB45B88D.png) 示例: ```json // c_cpp_properties.json { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "${workspaceFolder}/88-My_Utility/include/", "E:\\GTest\\googletest\\googletest\\include", // gtest "E:\\GTest\\googletest\\googlemock\\include" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "compilerPath": "D:\\Program Files\\MinGW\\mingw64\\bin\\gcc.exe", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "windows-gcc-x64" } ], "version": 4 } ``` ## 配置 C/C++ 代码格式化 VSCode 中的 C/C++**官方插件**内置 `clang-format` 工具,支持**使用 `clang-format` 格式化 C++源代码**。 除了使用 C/C++官方插件内置的 `clang-format` 工具,也可以指定使用自行安装的 `clang-format` 工具,如下所示: ![image-20231213103009132|535](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-621BFFE1C8A1A4BF91761740DE805CDB.png) ### 代码格式化风格配置说明 配置说明参见[^3] ![image-20231213102814617|650](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-B76268E3AD29A8017AE7823B60E991D4.png) 代码格式化风格通过 C/C++**插件配置选项**中的 **`C_Cpp.clang_format_style`选项** 指定,有两种情况: - **方式一**:使用 clang-format 内置支持的多种代码风格 - 设定选项值为 `LLVM`,`Google`,`Chromium`,`Microsoft`,`Visual Studio`(默认),`Mozilla`,`GNU`。 - **方式二**:设定**选项值为 `file`**,同时**通过项目目录下的 `.clang-format` 文件==自定义==代码格式化方案** - 在该方式下,插件将首先**搜索并加载 `.clang-format` 文件,根据该配置中指定的规则进行格式化**。 - 若未能找到 `.clang-format` 文件,则**根据 `C_Cpp.clang_format_fallbackStyle` 选项指定的风格进行格式化**。 > [!example] 方式二配置示意 > `C_Cpp.clang_format_style` 设置: > > ![image-20231213002105285|675](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-B5090227C334399A01A504D9E6F3538B.png) > > `C_Cpp.clang_format_fallbackStyle` 设置: > > ![image-20231213092758372|675](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-E4D00377B2C6D3FF7F68FA8DD89BF643.png) > > ### `.clang-format` 配置文件 **自定义格式化规则**需要在配置文件 `.clang-format` 中定义,该文件通常存放在 Workspace 目录(即项目根目录)下。 ![image-20231008201417692](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-ABD4D01A9F8A1EEC42BA1AE4221C13EA.png) 若 VScode 中 C/C++插件配置项 `"C_Cpp.clang_format_style"` 设置为 `"file"` ,则对 C++源文件进行代码格式化时将**根据该配置文件中指定的规则**完成格式化。 在此设置下,**如果 `.clang-format` 文件不存在,则将根据插件配置项 `C_Cpp.clang_format_fallbackStyle` 指定的风格进行格式化。** #### `.clang-format` 文件配置参数 参见: - 官方文档[^7] - 别人博客中的设置示例[^8] <br><br> # Clangd 插件 参见 [[05-工具/VSCode/VSCode 配置使用 Clangd 插件|VSCode 配置使用 Clangd 插件]]。 <br> # CMake 插件 参见 [[05-工具/VSCode/VSCode 配置使用 CMake 插件|VSCode 配置使用 CMake 插件]] <br> # Code LLDB 插件 略。 参考 https://blog.csdn.net/m0_54206076/article/details/123836683 <br> # C++ TestMate 插件 C++ TestMate 插件提供了在 VSCode 里运行 Catch2,GoogleTest,CMake Test,DOCTest 测试的支持,并且支持 Google Benchmark。 C++ TestMate 提供的功能包括: - **支持测试程序中,某个单一用例的独立运行和调试** - **在 VSCode 提供的 Testing 视窗里显示测试用例,可控制用例的执行和收集执行结果** VSCode 提供的 Testing 视窗: ![image-20231221175238795|626](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-C43C54E90651FB5B3F8CFFF5CE30B25E.png) Testing 视窗中的显示内容和信息是从**测试程序**处获得的,保证**单元测试可执行程序被正确编译生成**,即可在 Testing 视窗中显示 **单元测试一览** 并提供 **单元测试用例单独调试运行功能**。 ### 插件配置 需要为插件配置 **"测试程序 (可执行程序)" 的所在路径**,在 VSCode 界面中运行测试时,**插件将自动运行该路径下的程序**。 ![image-20231221175421557|700](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-FC9151738CF99F3D487DD41FE479BA0F.png) ![image-20231221175631686|719](_attachment/05-工具/VSCode/VSCode%20配置%20C&C++%20开发环境.assets/IMG-VSCode%20配置%20C&C++%20开发环境-633B8A3C34AAA067C7D54DFAE8FFAC04.png) <br> # Makefile Tools 插件(❌) 强烈不推荐使用,该插件**非常鸡肋**,如评论所言,**既没有文档说明也没有配置示例和教程**,很难明白**要在哪里、如何去配置相关参数**。 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-2CAD6B8A065A58E20492640FD6EDB612.png|649]] 从功能上来看,额外提供了一个 **Makefile 视窗**,可通过 **"视窗上的按钮"** 或 **"VSCode 命令"** 便捷进行 **==构建、调试、运行==**。 然而**这些功能不需要这个插件就能更好完成**,**构建&运行通过 VSCode 的 task 与 launch 即可实现,还更方便**。 VSCode 总是会对还有 Makefile 的项目弹窗推荐该插件,建议**直接关闭**。 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-6C42A71671E519AB22F51499E64C023E.png|404]] ##### 插件功能 该插件提供的左侧 Makefile 视窗,一些快捷按钮和命令 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-DD8D17BA3CEE35AB8F7B4961540C2283.png|360]] ## 插件命令 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-740B726AE94C2CD86B8AD11EFBD65433.png|470]] ## 插件配置 配置 `make` 工具路径,如下图,在 Windows 下 MinGW 设置为 `mingw32-make`。 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-4C36F6CA7F3BEE9D7D4F44092A291AEE.png|264]] ## 插件使用 在插件提供的 Makefile 视窗中,可配置: - **构建目标**(Build target) - **运行目标**(Launch target) ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-094589EC6EE41ABD538A4FEE3BBCEC3E.png|464]] 在选中一项 "Launch target" 后,插件会自动在 `.vscode/settings.json` 中的 `makefile.launchConfigureations` 字段加入运行该程序的配置信息,包括 "**当前工作目录**"、**可执行文件路径**、**传入参数**。 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-DCE1427C7961C4223F0539872F0910E6.png|452]] #### 启动运行 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-0F67E1660AE0699513B929AB990B61C6.png|513]] #### 配置 launch 的程序 ![[_attachment/05-工具/VSCode/VSCode 配置 C&C++ 开发环境.assets/IMG-VSCode 配置 C&C++ 开发环境-DCE1427C7961C4223F0539872F0910E6.png|480]] `makefile.launchConfigureations` 配置的是通过该插件 **"Run/Debug" 指定的 "Launch target" 程序**时,**可执行文件的路径以及运行该程序参数**。 <br><br><br> # 参考资料 - [Visual Studio Code 配置 C/C++ 开发环境的最佳实践(VSCode + Clangd + XMake)](https://zhuanlan.zhihu.com/p/398790625) - [vscode 配置 C++ 开发环境的插件选择](https://zhuanlan.zhihu.com/p/529352071) - [Visual Studio Code 如何编写运行 C、C++ 程序? - 程序员柠檬的回答 - 知乎](https://www.zhihu.com/question/30315894/answer/1574277687) # FootNotes [^1]: [Introductory Videos for C++ in Visual Studio Code](https://code.visualstudio.com/docs/cpp/introvideos-cpp) [^2]: [Configure launch.json for C/C++ debugging in Visual Studio Code](https://code.visualstudio.com/docs/cpp/launch-json-reference) [^3]: [Edit C++ in Visual Studio Code](https://code.visualstudio.com/docs/cpp/cpp-ide) [^4]: [Using GCC with MinGW](https://code.visualstudio.com/docs/cpp/config-mingw) [^5]: [c_cpp_properties.json reference](https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference) [^6]: [Configure C/C++ IntelliSense](https://code.visualstudio.com/docs/cpp/configure-intellisense) [^7]: [CLANG-FORMAT STYLE OPTIONS](https://clang.llvm.org/docs/ClangFormatStyleOptions.html) [^8]: [vscode设置C++代码格式化(Clang-Format)](https://juejin.cn/post/7071871587674243102) [^9]: [Visual Studio Code 如何编写运行 C、C++ 程序?](https://www.zhihu.com/question/30315894)