# vscode_multi_cpp_file_configuration **Repository Path**: C_YouShao/vscode_multi_cpp_file_configuration ## Basic Information - **Project Name**: vscode_multi_cpp_file_configuration - **Description**: VS Code 多cpp文件配置模板 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-09-03 - **Last Updated**: 2023-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vscode_multi_cpp_file_configuration ## 一、介绍 本仓库是一个VS Code 多 C++ 文件配置模板,克隆到本地即可,开箱机用。 适用于Windows系统。 **本模板项目文件结构说明** ``` projectName ├── bin │ └── main.exe ├── include │ └── hello.h ├── src │ └── hello.cpp └── main.cpp ``` 1、***main.cpp*** 是 vscode 项目入口,在该文件中包含其它所有要用到的头文件即可 2、***include*** 目录下存放所有头文件 3、***src*** 目录下存放源文件(除了 ***main.cpp***) 4、***bin*** 目录下存放生成的可执行文件 如果使用本模板,请和如上所示的文件结构保持一致,或者修改配置文件使其和你的文件结构匹配。 **其它补充** 本文默认你已经拥有 `MinGW` 环境并做好环境变量的配置工作。 可参考下文在 VS Code 中配置 C/C++ 编译环境,下文的 [配置文件](#四、配置文件(`tasks.json`,`launch.json`)) 章节仅供参考,最终配置文件参见本仓库 `.vscode` 目录。 如果遇到问题请提交 PR 或者 积极谷歌! ## 二、安装 VSCode 插件 打开 VS Code 的插件市场(`Ctrl+Shift+X`),搜索并安装以下插件: 1、Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 2、C/C++ ## 三、调整 VSCode 和插件的设置 打开 VS Code 设置(`Ctrl+,`),把下列选项粘贴至搜索框内,调整为以下配置: `-` 前面是配置项,`-` 后面是配置值,`()`内是配置说明。 - editor.formatOnType – **勾选**(行末输入 `;` 自动格式化代码,不设置的话你也可通过快捷键 `Alt+Shift+F`手动格式化代码) - editor.mouseWheelZoom – **勾选**(鼠标滚轮缩放VS Code视图) - C_Cpp.autocompleteAddParentheses – **勾选**(按下 `Tab` 键自动为函数补全括号) - C_Cpp.default.cppStandard – **c++17**(设置编译C++代码的标准) - C_Cpp.default.cStandard – **c11**(设置编译C代码的标准) - C_Cpp.default.compilerPath – **C:\\mingw64\\bin\\g++.exe**(替换为你的g++.exe所在路径) - C_Cpp.default.includePath – **C:\\mingw64\\lib**(替换为你的mingw64下的lib文件夹类的路径) - C_Cpp.default.intelliSenseMode – **gcc-x64**(代码分析的模式,不懂的话直接抄作业即可) ## 四、配置文件(`tasks.json`,`launch.json`) 所有配置均以本仓库中 `.vscode` 目录下的最终配置文件(`tasks.json`,`launch.json`)为准! VS Code配置文件中常见变量的含义: ``` ${workspaceFolder} 工作目录 ${workspaceFolderBasename} 没有任何斜杠 (/)的 VS Code 中打开的文件夹目录 ${workspaceRoot} 当前打开的文件夹的绝对路径+文件夹的名字 ${workspaceRootFolderName} 当前打开的文件夹的名字 ${file} 当前打开正在编辑的文件名,包括绝对路径,文件名,文件后缀名 ${fileDirname} 当前打开的文件所在的绝对路径,不包括文件名 ${fileBasename} 当前打开的文件名+后缀名,不包括路径 ${fileBasenameNoExtension} 当前打开的文件的文件名,不包括路径和后缀名 ${relativeFile} 目前打开文件相对于 workspaceFolder 的相对位置 ${fileExtname} 当前打开的文件的后缀名 ${cwd} 项目启动时,task runner的工作目录 ${lineNumber} 当前打开的文件,光标所在的行数 ${selectedText} 文件中目前被选择的内容 ``` 将下面的两个文件放置到打开的工作文件夹下面的 `.vscode` 文件夹内: `tasks.json` 文件: ```json { "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe 生成活动文件", "command": "C:\\mingw64\\bin\\g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "调试器生成的任务。" } ], "version": "2.0.0" } ``` 如果希望内置控制台运行,选择下面的 `launch.json`: ```json { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "g++.exe - 生成和调试活动文件", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe 生成活动文件" } ] } ``` 如果希望在外置控制台运行,将上面 launch.json 中的 externalConsole 改为 true 即可。 如果希望在外置控制台运行,并且程序结束后暂停,选择下面的 `launch.json`: **warning 警告** 使用这个方式是不能正常使用调试器的,所以不是很建议用这种,建议还是打断点暂停。 ```json { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "g++.exe - 生成和调试活动文件", "type": "cppdbg", "request": "launch", "program": "C:\\Windows\\System32\\cmd.exe", "args": [ "/k", "${fileDirname}\\${fileBasenameNoExtension}.exe", "&", "pause", "&", "exit" ], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, "preLaunchTask": "C/C++: g++.exe 生成活动文件" } ] } ``` > 参考: > > - https://www.zouht.com/3448.html > - https://blog.csdn.net/bailsong/article/details/77527773 > - https://zhuanlan.zhihu.com/p/44967536 ## 五、VS Code中使用gcc调试C++代码基础: 1、首先在需要检查的代码前面打上断点 2、F5开始调试,再按F5继续,意思是直接跳到下个断点 3、F10逐过程,意思是一行一行地执行代码,遇到函数不会跳到函数内部 4、F11单步调试,顾名思义,就是逐条语句执行,遇到函数会跳到函数内部。到函数内部之后,就可以继续使用F10逐过程执行代码了 5、如果到了某个函数内部,需要检查的代码以及执行完毕,可以单步跳出Shift+F11,执行上一层 6、更多进阶调试技巧,比如条件编译...请积极谷歌!