# Linux_VSCode_json_make **Repository Path**: yutao13910032004/linux_vscode_json_make ## Basic Information - **Project Name**: Linux_VSCode_json_make - **Description**: Liunx VSCode 编译调试包含多个目录多个源文件和头文件的项目, 对于 json 和 makefile 的配置说明和源码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-05-23 - **Last Updated**: 2025-01-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux VSCode 编译调试 多个C源文件的项目的 json 和 makefile 配置 ## 前言 如果对单个源C文件的编译调试的 json 配置不熟悉, 请首先参考 单个文件的配置流程**代码仓库** [Linux_VSCode_json](https://gitee.com/yutao13910032004/vscode_json), 这也是本文的前提基础. 熟悉了单个文件的配置之后, 再延伸到 多个源文件的项目 的配置. ## 流程说明 ![frame](./assets/json_make_frame.png) | |过程| |---|:---| | **编译** | **VSCode** 根据 **tasks.json** 调用 **make** 命令, **make** 根据 **makefile** 编译源代码, 生成带调试信息的可执行文件 | | **调试** | **VSCode** 根据 **launch.json** 调用 **gdb** 调试可执行文件| ## 三个配置文件 由以上的流程说明, 可以知道需要配置三个文件才能完成多源文件项目的编译和调试 |文件名|作用| |---|---| | **tasks.json** | 编译配置文件 | | **launch.json** | 调试配置文件 | **makefile** | gcc 编译选项文件 | ## 项目目录 |目录|说明| |---|---| | **主目录** | |    \|---**makefile** | gcc 编译配置文件 |    \|---**mydict** | 程序可执行文件 | **.vscode子目录** | | **   \|---task.json** | VSCode编译配置文件 | | **   \|---launch.json** | VSCode调试配置文件 | | **src子目录** | | **   \|---mydict.c** |程序主源文件 | | **   \|---dict.c** | 词典模块源文件 | | **   \|---dict.txt** | 词典条目列表文本文件 | | **inc子目录** | | **   \|---dict.h** | 词典模块头文件 | | **   \|---inc.h** | 项目所需包含头文件 | ## 使用说明 |步骤|说明| |---|---| |1. **下载**| 从 **Gitee** 下载本项目| |2. **拷贝**| 将 **./vscode** 目录(注意此为隐藏目录)和 **makefile**到自己项目的目录下| |4. **修改配置** |修改三个配置文件 | |5. **编译**| ( **保持VSCode的焦点在makefile文件**) 快捷键**shift + Ctrl + b** 或者菜单**Terminal --> Run Build Task** |6. **调试**| 快捷键 **F5**或者菜单**Run --> Start Debugging** ## json文件源代码 #### task.json ~~~json { "tasks": [ { "type": "cppbuild", "label": "gcc make mydict local", // task 的名称 "command": "make", // 执行 make 命令 "args": [], "options": { "cwd": "${fileDirname}" // 执行路径为当前C文件所在路径 }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "Task generated by Debugger." }, ], "version": "2.0.0" } ~~~ #### launch.json ~~~json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch mydict", "type": "cppdbg", "request": "launch", // 待调试执行文件, 文件名称为当前打开C源文件去掉扩展名 //"program": "${fileDirname}/${fileBasenameNoExtension}", "program": "/home/linux/PuteCode/linux_vscode_json_make/project_dict/mydict", "args": [], "stopAtEntry": true, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "Set Disassembly Flavor to Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] } ~~~ #### makefile ~~~makefile # 生成的可执行文件名 DEST=mydict # 带路径的C源文件, 其中 mydict.c 为包含 main 函数的主文件 SRC=./src/mydict.c SRC+=./src/dict.c # 编译器 Comp_Rule=gcc # 运行命令, 生成带调试信息的可执行文件( -o 选项 ) $(DEST):$(SRC) $(Comp_Rule) $(SRC) -o $(DEST) .PHONY: clear: rm $(DEST) ~~~ --- ## 联系方式 ||| |---|---| |邮箱 | YuTao13910032004@163.com |微信公众号| Engineer_Excellence | |Gitee代码仓库链接|[Linux_VSCode_json_make](https://gitee.com/yutao13910032004/linux_vscode_json_make)|