sublime 编译调试c/c++程序

本文介绍了如何在Sublime Text中配置C/C++的编译环境,包括构建系统设置、C和C++的编译系统配置,以及如何使用SublimeGDB进行调试。文章详细阐述了每个步骤,并提供了相关的json配置示例。

sublime 编译调试c/c++程序

有时候只是想用c编写一个测试小程序,不想去开庞大的VS。现在很多文本编辑器都有强大的插件管理系统,可以轻松的配置一个c/c++编译环境。
但是能做到各方面都表现优异的编辑器只有emacs和sublime了。两款编辑器在某种意义上的设计哲学很类似,都是伪装成操作系统的编辑器。
在windows平台下两款编辑器都有比较好的表现,但是从使用方便程度来说,sublime更能符合windows用户的操作习惯。

sublime配置c/c++编译环境

sublime提供了构建功能,他的构建系统(Build Systems)可以运行一段外部命令,还可以捕获输出并在控制台显示。

通过定制构建系统,再搭配MinGW可以很方便的搭建一个编译环境。
但是这种方式有缺陷,一键编译一般都只能编译当前文件,对于一个工程来说,还是需要在命令行下自己编译。
PS:sublime也有比较优秀的命令行插件Terminal

编译系统

在sublime中有很多默认编程语言的编译系统,但是对于c/c++来说,编译系统需要自己来定制。

编译系统文件是json文件,遵循json的语法。
json数据的书写格式是:
“名称”: “值”
值中如果还有双引号的话要使用 ‘\’ 来转义

sublime-build的几个名称介绍

名称含义
working_dir运行cmd是会先切换到working_dir指定的工作目录
cmd包括命令及其参数。如果不指定绝对路径,外部程序会在你系统的:const:PATH 环境变量中搜索。
shell_cmd相当于shell:true的cmd ,cmd可以通过shell运行。
file_regex该选项用Perl的正则表达式来捕获构建系统的错误输出到sublime的窗口。
selector在选定 Tools
variants用来替代主构建系统的备选。例如Run命令。会显示在tool的命令中。
name只在variants下面有,设置命令的名称,例如Run。

sublime-build中可以使用的几个变量(变量的使用可以直接使用,也可以使用花括号括起来,例如 ${project_name})

变量含义
$file_path当前文件所在目录路径, e.g., C:\Files.
$file当前文件的详细路径, e.g., C:\Files\Chapter1.txt.
$file_name文件全名(含扩展名), e.g., Chapter1.txt.
$file_extension当前文件扩展名, e.g., txt.
$file_base_name当前文件名(不包括扩展名), e.g., Document.

c程序编译系统

对于c程序,编译命令为 ’ gcc -g -Wall filename -o file_base_name’
根据sublime build system的语法编写如下代码,存为Packages/User/C.sublime-build

{
    "cmd": "gcc -g -Wall \"$file_name\" -o \"$file_base_name\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "$file_path",
    "selector": "source.c",

    "variants":
    [
        {
            "name": "CMD Run",
            "shell_cmd": "gcc -g -Wall \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
        },
        {
            "name": "Run in Sublime",
            "shell_cmd": "gcc -g -Wall \"$file\" -o \"$file_base_name\" && cmd /c \"${file_path}/${file_base_name}\""
        }
    ]
}

c++程序编译系统

对于c++程序,编译命令为 ‘g++ -std=c++11 -g -Wall filename -o file_base_name’
类似的编写如下代码,存为Packages/User/C++.sublime-build

{
    "shell_cmd": "g++ -std=c++11 -g -Wall \"${file}\" -o \"${file_path}/${file_base_name}\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c++",
    "encoding": "utf-8",

    "variants":
    [
        {
            "name": "CMD Run",
            "shell_cmd": "g++ -std=c++11 -g -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause \""
        },
        {
            "name": "Run in Sublime",
            "shell_cmd": "g++ -std=c++11 -g -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" && cmd /c \"${file_path}/${file_base_name}\""
        }
    ]
}

使用方法

在第一行配置了编译命令
在variants中配置了两个运行命令,一种是CMD Run,在cmd中运行当前程序;另一种是Run in Sublime,直接在sublime控制台中运行当前程序。
两种方式视情况使用:当程序需要从控制台输入信息的时候,需要从cmd中运行。

Ctrl + Shift + b 选择
会有几个选项
sublime编译选项

选项含义
C表示编译当前C文件
CMD Run表示在CMD中运行当前程序
Run in Sublime表示在sublime控制台中运行当前程序

sublime配置调试c/c++

有时候编写一个小测试程序,偶尔会出一些问题,或者非常想单步跟踪程序,这个时候就十分需要调试功能了。之前一直是在命令行使用gdb通过命令查看程序变量,十分的麻烦。
在emacs和VS Code中有非常好的gdb调试功能,调试界面十分方便

emacs gdb调试界面
VS Code 调试界面

在sublime中,也有相应的调试插件

sublimegdb

安装完sublimegdb后,最重要的是配置工作目录设置。

使用Save Project As命令,将当前的工作目录保存
最重要的是保存为 .sublime-project 文件
在 .sublime-project 文件中添加工作目录设置

    "settings":
    {
        "sublimegdb_workingdir": "E:\\Learning\\Code\\workspace",
        "sublimegdb_commandline": "gdb --interpreter=mi ./${file_base_name}.exe"
    },

第一项设置需要调试的目录的路径,第二行设置调试的命令行参数
gdb 调试命令 ‘gdb a.exe’
使用sublimegdb要加上 ‘–interpreter=mi’ 参数

PS:在调试之前要先编译文件生成带有调试信息(gcc/g++添加 -g 参数)的exe文件

sublimegdb

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值