网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 其他技术区 > 算法与数据结构 >

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

时间:2025-03-14 14:37

人气:

作者:admin

标签:

导读:背景 学习数据结构,写了很多C语言程序,这些C语言程序都保存在一个Git仓库中,以章节、实验内容为目录存放,形如: 之前一直是通过gcc命令手动编译、运行,但随着程序逐渐复杂,...

背景

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

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

环境

  • VSCode,安装了C/C++扩展
  • Linux
  • GCC

解决方案

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

  1. ~/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中,所以可以全局执行此脚本。
  2. 编辑.gitignore,让Git忽略build目录:
    # 注意:因为build是符号链接,所以尾部不要加/
    build
    
  3. .vscode目录中创建tasks.jsonlaunch.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目录中对源文件打断点,调试器也能正确在断点停住。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信