macossublime编译C语言

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 C语言 正文

Sublime Text 的编译系统

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

macossublime编译C语言
(图片来源网络,侵删)
  1. 读取一个配置文件:这个文件告诉 ST3 当你按下 Cmd + B (Build) 时,应该执行哪个命令。
  2. 执行一个外部命令:通常是 gcc (GNU Compiler Collection) 或 clang (macOS 默认的编译器)。
  3. 捕获输出:将编译器的输出(成功信息或错误信息)显示在底部的 Build Results 面板中。

我们的任务就是创建或修改这个配置文件,让它能正确地调用 clang 来编译我们的 C 代码。


使用 Sublime Text 的默认配置(推荐新手)

Sublime Text 3 已经内置了一个很好的默认配置,它使用 clang,并且能自动处理大部分情况。

步骤 1:安装 Xcode Command Line Tools

macOS 默认没有安装命令行编译器,你需要安装 Xcode Command Line Tools,它会为你提供 clangmake 等工具。

macossublime编译C语言
(图片来源网络,侵删)

打开你的终端(Terminal.app),输入以下命令并回车:

xcode-select --install

系统会弹出一个安装窗口,按照提示完成安装,安装后,你可以在终端输入 clang --version 来验证是否安装成功。

步骤 2:创建和编写 C 代码

  1. 打开 Sublime Text。

    macossublime编译C语言
    (图片来源网络,侵删)
  2. 新建一个文件 (Cmd + N)。

  3. 输入一个简单的 C 程序,hello.c

    #include <stdio.h>
    int main() {
        printf("Hello, Sublime Text on macOS!\n");
        return 0;
    }
  4. 将文件保存为 hello.c (Cmd + S)。文件名后缀 .c 非常重要,它告诉 Sublime Text 这是一个 C 文件,并加载相应的编译配置。

步骤 3:编译和运行

  1. 在 Sublime Text 中,按下 Cmd + B

  2. 底部会弹出一个名为 Build Results 的面板,你会看到类似下面的输出:

    [Finished in 0.2s]
    clang -o "hello" "hello.c" -std=c99

    这表示 Sublime Text 自动调用了 clang 命令,编译 hello.c 并生成了一个名为 hello 的可执行文件。

步骤 4:运行程序

默认的 Cmd + B 只负责编译,不负责运行,要运行程序,你需要:

  1. 确保你在 Sublime Text 的主窗口中。

  2. 按下 Cmd + Shift + B (Run)。

  3. 程序的输出会显示在 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 更新时你的配置不会被覆盖。

  1. 在 Sublime Text 中,打开菜单 Tools -> Build System -> New Build System...

  2. 一个新的模板文件会打开,内容如下:

    {
        "cmd": ["make"]
    }
  3. 删除所有内容,然后粘贴下面我们为 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:保存并使用自定义编译系统

  1. 保存这个文件,Sublime Text 会提示你输入文件名,请务必使用 .sublime-build 后缀,my_c_build.sublime-build,它会自动保存在你的用户配置目录中。
  2. 回到 Sublime Text,打开菜单 Tools -> Build System,你会在列表的底部看到你刚刚创建的 my_c_build
  3. 点击它,选中它,它旁边会出现一个勾号,表示它现在是活动的编译系统。
  4. 现在你可以像之前一样使用 Cmd + B (Build), Cmd + Shift + B (Run) 和 Cmd + Option + B (Build and Run)。

如何添加外部库?

假设你需要链接 SDL2 库。

  1. 你需要确保已经安装了 SDL2,最简单的方式是使用 Homebrew

    brew install sdl2
  2. 在 Sublime Text 中,打开菜单 Tools -> Build System -> Build System: my_c_build (或者你自定义的名字)。

  3. 这会打开一个名为 my_c_build.sublime-variant 的文件(这实际上是 Sublime Text 3.0 之后的新特性,用于修改活动编译系统的配置)。

  4. 在这个文件中,添加 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 查看实际的安装路径。

  5. 保存这个 .sublime-variant 文件。

  6. 当你按下 Cmd + B 时,编译命令就会自动包含这些链接库的参数了。


总结与最佳实践

方法 优点 缺点 适用场景
默认配置 零配置,开箱即用 不灵活,无法链接外部库 简单的、单文件的 C 程序练习。
自定义配置 极度灵活,可定制所有编译选项 需要手动配置,对新手稍复杂 需要链接库、进行复杂项目开发、希望完全掌控编译过程的用户。

推荐工作流:

  1. 安装 Xcode Command Line Tools (这是所有方法的前提)。
  2. 对于日常学习和简单的单文件程序,直接使用默认配置 (Cmd + B 编译, Cmd + Shift + B 运行)。
  3. 当你需要开始做项目,特别是需要使用第三方库时,花 10 分钟时间设置一个自定义编译系统,这会让你的开发效率大大提升。

希望这个详细的指南能帮助你在 Sublime Text 上愉快地编写和运行 C 语言程序!

-- 展开阅读全文 --
头像
织梦网GBK与UTF版本有何核心区别?
« 上一篇 12-07
dede arclist idlist如何调用指定ID列表?
下一篇 » 12-07

相关文章

取消
微信二维码
支付宝二维码

目录[+]