嗣伐 发表于 2025-6-8 22:20:38

VSCode+Linux+GCC编译运行数据结构的C语言程序集

背景

学习数据结构,写了很多C语言程序,这些C语言程序都保存在一个Git仓库中,以章节、实验内容为目录存放,形如:

之前一直是通过gcc命令手动编译、运行,但随着程序逐渐复杂,希望简化构建过程,做到一键编译运行,同时支持断点调试。
环境


[*]VSCode,安装了C/C++扩展
[*]Linux
[*]GCC
解决方案

思路:设立一个build目录专门用来编译、运行、调试单个C语言程序,即“当前C语言程序”。通过符号链接将指定的C语言程序目录设为build目录。

[*]在~/bin目录中创建Bash脚本set-data-structure-build-dir,实现将当前目录设为build目录:# 构建目录的路径
build_dir="<Git仓库>/build"
# 删除现有的符号链接
rm -f $build_dir
# 将当前目录做符号链接到构建目录
# 当前目录路径中包含空格,所以要用双引号包裹
ln -s "$(pwd)" $build_dir给脚本添加执行权限:chmod +x set-data-structure-build-dir因为~/bin在环境变量PATH中,所以可以全局执行此脚本。
[*]编辑.gitignore,让Git忽略build目录:# 注意:因为build是符号链接,所以尾部不要加/
build
[*]在.vscode目录中创建tasks.json和launch.json,让VSCode在build目录中编译、调试运行C语言程序。
tasks.json:{
        "tasks": [
                {
                        "type": "cppbuild",
                        "label": "GCC编译",
                        "command": "/usr/bin/gcc",
                        "args": [
                                "-fdiagnostics-color=always",
                                "-g",
                                // 支持多个源文件
                                "<Git仓库>/build/*.c",
                                "-o",
                                "<Git仓库>/build/a.out"
                        ],
                        "options": {
                                "cwd": "<Git仓库>/build"
                        },
                        "problemMatcher": [
                                "$gcc"
                        ],
                        "group": {
                                "kind": "build",
                                "isDefault": true
                        },
                        "detail": "GCC编译"
                }
        ],
        "version": "2.0.0"
}launch.json:{
        "version": "0.2.0",
        "configurations": [
                {
                        "name": "GDB调试",
                        "type": "cppdbg",
                        "request": "launch",
                        "program": "<Git仓库>/build/a.out",
                        "args": [],
                        "stopAtEntry": false,
                        "cwd": "<Git仓库>/build",
                        "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
                                }
                        ],
                        "preLaunchTask": "GCC编译",
                        "miDebuggerPath": "/usr/bin/gdb"
                }
        ]
}
结果

在VSCode中,右键任何一个C语言程序的目录,在终端打开,然后执行set-data-structure-build-dir。
按F5编译、运行。
实测发现,即使是在原始的C语言程序目录而不是build目录中对源文件打断点,调试器也能正确在断点停住。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

磁呃泵 发表于 2025-11-10 07:14:14

不错,里面软件多更新就更好了

榷另辑 发表于 2025-12-6 13:15:59

懂技术并乐意极积无私分享的人越来越少。珍惜

锟及 发表于 2025-12-20 12:56:03

这个好,看起来很实用

施婉秀 发表于 2025-12-24 23:18:01

不错,里面软件多更新就更好了

盖彗云 发表于 2026-1-5 03:55:54

过来提前占个楼

腥狩频 发表于 2026-1-13 20:25:49

yyds。多谢分享

井晶灵 发表于 2026-1-15 11:39:56

懂技术并乐意极积无私分享的人越来越少。珍惜

马璞玉 发表于 2026-1-20 02:57:47

这个好,看起来很实用

上官泰 发表于 2026-1-20 10:23:31

yyds。多谢分享

豌笆 发表于 2026-1-20 21:12:57

谢谢分享,辛苦了

诈知 发表于 2026-1-21 01:09:41

用心讨论,共获提升!

存叭 发表于 2026-1-23 06:56:04

这个有用。

湄圳啸 发表于 2026-1-23 11:26:10

前排留名,哈哈哈

第璋胁 发表于 2026-1-24 10:29:54

感谢,下载保存了

院儿饯 发表于 2026-1-28 07:00:32

喜欢鼓捣这些软件,现在用得少,谢谢分享!

恶凝毛 发表于 2026-1-29 08:09:37

谢谢分享,试用一下

伯绮梦 发表于 2026-2-3 08:54:15

很好很强大我过来先占个楼 待编辑

阎怀慕 发表于 2026-2-8 14:29:46

感谢分享

事确 发表于 2026-2-9 01:03:47

新版吗?好像是停更了吧。
页: [1] 2
查看完整版本: VSCode+Linux+GCC编译运行数据结构的C语言程序集