sublime text 编译c++需先确保系统已正确安装并配置g++/gcc,再创建自定义c++.sublime-build文件,含编译和运行变体,多文件项目应使用makefile,交互输入需通过终端或terminus插件实现。

Sublime Text 本身不编译代码,它只调用系统已安装的 gcc 或 g++;如果终端里连 gcc --version 都报错,那任何 Build System 配置都白搭。
确认编译器已装好且能被系统找到
这是最常卡住的一步。不是“装了 MinGW 就行”,而是要确保 g++(C++)或 gcc(C)命令在任意 CMD/PowerShell/Terminal 中都能直接执行。
- Windows:安装 MinGW-w64(别用老版 MinGW),把
mingw64\bin目录加进系统PATH,然后关掉所有终端重开,再输g++ --version - macOS:用 Homebrew 装的
gcc通常叫gcc-14这类带版本号的命令,得在 Build System 里显式写成"shell_cmd": "gcc-14 ...",或者建软链:sudo ln -s /opt/homebrew/bin/gcc-14 /usr/local/bin/gcc - Linux:Ubuntu/Debian 用户先跑
sudo apt install build-essential,CentOS/RHEL 用sudo yum install gcc-c++ - 验证失败时别急着改 Sublime 配置——先解决终端里命令不可用的问题
写一个真正可用的 C++.sublime-build 文件
默认的 C++ 构建系统在 Windows 下大概率因路径空格、编码或 shell 兼容性崩掉。推荐手写一个可控的 JSON 配置,保存为 C++.sublime-build(路径自动落在 Packages/User/):
{
"shell_cmd": "g++ -std=c++17 -Wall -g \"${file}\" -o \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):([0-9]+):? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c++, source.cpp",
"variants": [
{
"name": "Run",
"shell_cmd": "cd \"${file_path}\" && \"${file_path}/${file_base_name}\""
}
]
}
-
-g必须加:没有它,后续用gdb或调试插件会直接失效 -
-Wall强烈建议保留:不警告等于埋雷,尤其隐式类型转换、未使用变量这类问题 - Windows 用户注意:
&&是 CMD 语法,PowerShell 里得换成;,否则Run变体一定失败 -
file_regex必须匹配 GCC 实际报错格式(如main.cpp:5:10: error: …),否则点击错误行不会跳转
多文件项目或带头文件时别硬扛 Build System
Sublime 的构建系统没有依赖分析能力,${file} 只代表当前打开的单个文件。一旦你有 main.cpp + utils.cpp + utils.h,手动改 shell_cmd 加一堆 *.cpp 是自找麻烦。
- 正确做法是写一个
Makefile,然后 Build System 改成:"shell_cmd": "make -f Makefile" - 如果不想写 Makefile,就别在 Sublime 里折腾——直接切到终端,
g++ main.cpp utils.cpp -o app更快更稳 - 某些人试图用
find . -name \"*.cpp\"拼接源文件,但路径含空格、中文、特殊字符时极易崩溃,不推荐
想支持交互输入(比如 scanf)?别指望输出面板
Sublime 自带的 Build 输出面板是只读流,无法接收键盘输入。所谓“运行后卡住”,其实是程序在等 stdin,但面板根本不提供输入通道。
- 方案一:Build System 里用
start cmd /c \"${file_path}/${file_base_name} & pause\"(Windows),弹独立 CMD 窗口 - 方案二:编译完手动去终端执行生成的可执行文件,比如
./main或main.exe - 方案三:装插件
Terminus,配置 Run 变体调用它启动终端,但需额外设置工作目录和 shell 路径 - 别在
shell_cmd里写run_in_terminal: true—— Sublime 原生不支持这个字段,写了也无效
最容易被忽略的是:Build System 保存后必须手动在 Tools → Build System 里选中它,否则 Ctrl+B 仍走默认逻辑;另外,文件必须先保存(哪怕空内容),否则 ${file} 变量为空,编译命令直接崩。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











