Sublime Text 的编译系统
你需要理解 Sublime Text 是如何工作的,它本身不是一个集成开发环境,它没有内置的 C 语言编译器,它的“编译”功能实际上是:

- 读取一个配置文件:这个文件告诉 ST3 当你按下
Cmd + B(Build) 时,应该执行哪个命令。 - 执行一个外部命令:通常是
gcc(GNU Compiler Collection) 或clang(macOS 默认的编译器)。 - 捕获输出:将编译器的输出(成功信息或错误信息)显示在底部的 Build Results 面板中。
我们的任务就是创建或修改这个配置文件,让它能正确地调用 clang 来编译我们的 C 代码。
使用 Sublime Text 的默认配置(推荐新手)
Sublime Text 3 已经内置了一个很好的默认配置,它使用 clang,并且能自动处理大部分情况。
步骤 1:安装 Xcode Command Line Tools
macOS 默认没有安装命令行编译器,你需要安装 Xcode Command Line Tools,它会为你提供 clang 和 make 等工具。

打开你的终端(Terminal.app),输入以下命令并回车:
xcode-select --install
系统会弹出一个安装窗口,按照提示完成安装,安装后,你可以在终端输入 clang --version 来验证是否安装成功。
步骤 2:创建和编写 C 代码
-
打开 Sublime Text。
(图片来源网络,侵删) -
新建一个文件 (
Cmd + N)。 -
输入一个简单的 C 程序,
hello.c:#include <stdio.h> int main() { printf("Hello, Sublime Text on macOS!\n"); return 0; } -
将文件保存为
hello.c(Cmd + S)。文件名后缀.c非常重要,它告诉 Sublime Text 这是一个 C 文件,并加载相应的编译配置。
步骤 3:编译和运行
-
在 Sublime Text 中,按下
Cmd + B。 -
底部会弹出一个名为 Build Results 的面板,你会看到类似下面的输出:
[Finished in 0.2s] clang -o "hello" "hello.c" -std=c99这表示 Sublime Text 自动调用了
clang命令,编译hello.c并生成了一个名为hello的可执行文件。
步骤 4:运行程序
默认的 Cmd + B 只负责编译,不负责运行,要运行程序,你需要:
-
确保你在 Sublime Text 的主窗口中。
-
按下
Cmd + Shift + B(Run)。 -
程序的输出会显示在 Build Results 面板中:
Hello, Sublime Text on macOS! [Finished in 0.3s]
优点:
- 简单快捷,无需任何配置。
- 自动处理了编译命令,包括设置 C99 标准(
-std=c99)。
缺点:
- 如果你的程序需要链接外部库(SDL, OpenGL),这个默认配置就无法满足需求了。
自定义编译系统(更灵活、更强大)
当你需要链接库、修改编译选项或希望使用 gcc 而不是 clang 时,就需要自定义编译系统了。
步骤 1:找到编译系统配置文件
Sublime Text 的编译系统配置文件是 JSON 格式的,它们通常位于:
/Applications/Sublime Text.app/Contents/MacOS/Packages/C.sublime-package
这是一个压缩包,你可以把它复制出来,解压,修改里面的文件,然后再打包回去,但更简单、更推荐的方法是创建一个用户级的覆盖文件,这样 Sublime Text 更新时你的配置不会被覆盖。
-
在 Sublime Text 中,打开菜单
Tools -> Build System -> New Build System...。 -
一个新的模板文件会打开,内容如下:
{ "cmd": ["make"] } -
删除所有内容,然后粘贴下面我们为 C 语言自定义的配置。
步骤 2:编写自定义编译系统配置
下面是一个功能强大的 C 语言编译系统配置,它会:
- 自动检测文件名,生成与文件名同名的可执行文件。
- 使用
clang作为编译器。 - 自动包含标准 C 库路径。
- 允许你通过
extra_conf变量轻松添加额外的编译和链接选项(如-lSDL2)。
将以下代码复制到新建的 Build System 文件中:
{
"shell": true, // 使用 shell 执行命令,可以支持管道和通配符
"cmd": [
"clang \"${file}\" -o \"${file_path}/${file_base_name}\" -std=c99 -Wall ${extra_conf}" // 编译命令
],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (warning|error): (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"variants":
[
// Run variant
{
"name": "Run",
"cmd": ["\"${file_path}/${file_base_name}\""],
"shell": true,
"working_dir": "${file_path}",
"selector": "source.c"
},
// Build and Run variant
{
"name": "Build and Run",
"cmd": ["bash -c \"clang \\\"${file}\\\" -o \\\"${file_path}/${file_base_name}\\\" -std=c99 -Wall ${extra_conf} && \\\"${file_path}/${file_base_name}\\\"\""],
"shell": true,
"working_dir": "${file_path}",
"selector": "source.c"
}
]
}
配置解释:
"shell": true: 允许我们在cmd中使用 shell 语法。"cmd": 这是核心的编译命令。"${file}": 当前打开的完整文件路径,/Users/yourname/hello.c。"${file_path}": 文件所在的目录,/Users/yourname。"${file_base_name}": 不带后缀的文件名,hello。-std=c99: 指定 C99 标准。-Wall: 显示所有警告。${extra_conf}: 一个变量,我们可以在后续通过设置来添加额外的编译/链接选项。
"variants": 定义了快捷方式的变体。Run: 直接运行编译好的程序。Build and Run: 先编译,然后立即运行(非常方便!)。
步骤 3:保存并使用自定义编译系统
- 保存这个文件,Sublime Text 会提示你输入文件名,请务必使用
.sublime-build后缀,my_c_build.sublime-build,它会自动保存在你的用户配置目录中。 - 回到 Sublime Text,打开菜单
Tools -> Build System,你会在列表的底部看到你刚刚创建的my_c_build。 - 点击它,选中它,它旁边会出现一个勾号,表示它现在是活动的编译系统。
- 现在你可以像之前一样使用
Cmd + B(Build),Cmd + Shift + B(Run) 和Cmd + Option + B(Build and Run)。
如何添加外部库?
假设你需要链接 SDL2 库。
-
你需要确保已经安装了
SDL2,最简单的方式是使用 Homebrew:brew install sdl2
-
在 Sublime Text 中,打开菜单
Tools -> Build System -> Build System: my_c_build(或者你自定义的名字)。 -
这会打开一个名为
my_c_build.sublime-variant的文件(这实际上是 Sublime Text 3.0 之后的新特性,用于修改活动编译系统的配置)。 -
在这个文件中,添加
extra_conf变量:{ "extra_conf": "-I/usr/local/include/SDL2 -L/usr/local/lib -lSDL2" }-I: 指定头文件(.h 文件)的搜索路径。-L: 指定库文件(.a 或 .dylib 文件)的搜索路径。-lSDL2: 告诉链接器链接libSDL2.dylib这个库。
注意:Homebrew 安装的库路径通常是
/usr/local/...或/opt/homebrew/...(Apple Silicon Mac),如果上面的路径不工作,请用brew info sdl2查看实际的安装路径。 -
保存这个
.sublime-variant文件。 -
当你按下
Cmd + B时,编译命令就会自动包含这些链接库的参数了。
总结与最佳实践
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 默认配置 | 零配置,开箱即用 | 不灵活,无法链接外部库 | 简单的、单文件的 C 程序练习。 |
| 自定义配置 | 极度灵活,可定制所有编译选项 | 需要手动配置,对新手稍复杂 | 需要链接库、进行复杂项目开发、希望完全掌控编译过程的用户。 |
推荐工作流:
- 安装 Xcode Command Line Tools (这是所有方法的前提)。
- 对于日常学习和简单的单文件程序,直接使用默认配置 (
Cmd + B编译,Cmd + Shift + B运行)。 - 当你需要开始做项目,特别是需要使用第三方库时,花 10 分钟时间设置一个自定义编译系统,这会让你的开发效率大大提升。
希望这个详细的指南能帮助你在 Sublime Text 上愉快地编写和运行 C 语言程序!
