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 选择
会有几个选项
| 选项 | 含义 |
|---|---|
| C | 表示编译当前C文件 |
| CMD Run | 表示在CMD中运行当前程序 |
| Run in Sublime | 表示在sublime控制台中运行当前程序 |
sublime配置调试c/c++
有时候编写一个小测试程序,偶尔会出一些问题,或者非常想单步跟踪程序,这个时候就十分需要调试功能了。之前一直是在命令行使用gdb通过命令查看程序变量,十分的麻烦。
在emacs和VS Code中有非常好的gdb调试功能,调试界面十分方便
在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文件

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





