找回密码
 立即注册
首页 业界区 科技 VSCode+Linux+GCC编译运行数据结构的C语言程序集 ...

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

嗣伐 2025-6-8 22:20:38
背景

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

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


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

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

  • 在~/bin目录中创建Bash脚本set-data-structure-build-dir,实现将当前目录设为build目录:
    1. # 构建目录的路径
    2. build_dir="<Git仓库>/build"
    3. # 删除现有的符号链接
    4. rm -f $build_dir
    5. # 将当前目录做符号链接到构建目录
    6. # 当前目录路径中包含空格,所以要用双引号包裹
    7. ln -s "$(pwd)" $build_dir
    复制代码
    给脚本添加执行权限:
    1. chmod +x set-data-structure-build-dir
    复制代码
    因为~/bin在环境变量PATH中,所以可以全局执行此脚本。
  • 编辑.gitignore,让Git忽略build目录:
    1. # 注意:因为build是符号链接,所以尾部不要加/
    2. build
    复制代码
  • 在.vscode目录中创建tasks.json和launch.json,让VSCode在build目录中编译、调试运行C语言程序。
    tasks.json:
    1. {
    2.         "tasks": [
    3.                 {
    4.                         "type": "cppbuild",
    5.                         "label": "GCC编译",
    6.                         "command": "/usr/bin/gcc",
    7.                         "args": [
    8.                                 "-fdiagnostics-color=always",
    9.                                 "-g",
    10.                                 // 支持多个源文件
    11.                                 "<Git仓库>/build/*.c",
    12.                                 "-o",
    13.                                 "<Git仓库>/build/a.out"
    14.                         ],
    15.                         "options": {
    16.                                 "cwd": "<Git仓库>/build"
    17.                         },
    18.                         "problemMatcher": [
    19.                                 "$gcc"
    20.                         ],
    21.                         "group": {
    22.                                 "kind": "build",
    23.                                 "isDefault": true
    24.                         },
    25.                         "detail": "GCC编译"
    26.                 }
    27.         ],
    28.         "version": "2.0.0"
    29. }
    复制代码
    launch.json:
    1. {
    2.         "version": "0.2.0",
    3.         "configurations": [
    4.                 {
    5.                         "name": "GDB调试",
    6.                         "type": "cppdbg",
    7.                         "request": "launch",
    8.                         "program": "<Git仓库>/build/a.out",
    9.                         "args": [],
    10.                         "stopAtEntry": false,
    11.                         "cwd": "<Git仓库>/build",
    12.                         "environment": [],
    13.                         "externalConsole": false,
    14.                         "MIMode": "gdb",
    15.                         "setupCommands": [
    16.                                 {
    17.                                         "description": "Enable pretty-printing for gdb",
    18.                                         "text": "-enable-pretty-printing",
    19.                                         "ignoreFailures": true
    20.                                 },
    21.                                 {
    22.                                         "description": "Set Disassembly Flavor to Intel",
    23.                                         "text": "-gdb-set disassembly-flavor intel",
    24.                                         "ignoreFailures": true
    25.                                 }
    26.                         ],
    27.                         "preLaunchTask": "GCC编译",
    28.                         "miDebuggerPath": "/usr/bin/gdb"
    29.                 }
    30.         ]
    31. }
    复制代码
结果

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册