Sublime Text 需配合本地 g++ 或 MinGW-w64 编译器才能运行 C++ 程序,配置核心是设置正确的构建系统并确保编译器路径已加入 PATH;Windows 用户还需处理 UTF-8 with BOM 编码及 _setmode 中文输出支持。

Sublime Text 本身不带编译器,也不能直接“运行”C++程序——它只是个编辑器。真正能运行 C++ 的,是你本地安装的 g++(Linux/macOS)或 MinGW-w64(Windows)。配置的关键,是让 Sublime 知道去哪调用这个编译器,并按正确顺序执行编译 + 运行。
确认系统已装好 C++ 编译器
这是最常卡住的一步:很多人以为装了 Sublime 就能跑 C++,结果点“Build”只看到 command not found: g++ 或 'g++' is not recognized as an internal or external command。
- Windows 用户必须手动安装
MinGW-w64(推荐使用msys2安装的mingw64工具链),并把g++.exe所在路径(如C:\msys64\mingw64\bin)加进系统PATH环境变量 - macOS 用户用
brew install gcc,安装后g++通常软链为g++-14(版本号可能不同),建议用which g++确认实际命令名 - Linux 用户一般自带
g++,但需确认:运行g++ --version有输出,且不是command not found
创建 Sublime 的 C++ 构建系统(.sublime-build)
Sublime 通过构建系统(Build System)定义“按下 Ctrl+B 后干啥”。默认的 C++ Single File 往往不带运行步骤,也未必匹配你本地的 g++ 路径或参数。
- 菜单栏选
Tools → Build System → New Build System… - 清空默认内容,粘贴以下内容(Windows 用户注意路径分隔符和
shell_cmd中的.exe):
{
"shell_cmd": "g++ -std=c++17 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${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": "g++ -std=c++17 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
}
]
}
保存为 C++.sublime-build(文件名必须以 .sublime-build 结尾),建议存到 Packages/User/ 目录下。
立即学习“C++免费学习笔记(深入)”;
-
-std=c++17显式指定标准,避免老编译器默认用 C++98 导致新语法报错 -
-Wall开启常用警告,对初学者极有用 -
&&表示前一个命令成功才执行下一个,即“编译成功才运行”,防止运行旧可执行文件 - Windows 用户若用
MinGW-w64,shell_cmd中的g++可能需写成g++.exe,且运行部分要加./前缀:"./${file_base_name}.exe"
解决中文输入/输出乱码(Windows 高频问题)
用 MinGW 编译的程序在 Windows 终端里打印中文,经常显示为 ???,这不是 Sublime 的锅,而是控制台编码和源文件编码不一致。
- 确保你的 .cpp 文件保存为
UTF-8 with BOM(Sublime 右下角看编码,菜单File → Save with Encoding → UTF-8 with BOM) - 在代码开头加两行(仅 Windows MinGW 有效):
#include <iostream>
#include <io.h>
#include <fcntl.h>
int main() {
_setmode(_fileno(stdout), _O_U16TEXT); // 关键:让 stdout 支持 Unicode
std::wcout << L"你好,世界!" << std::endl;
}
注意:此时必须用 std::wcout 和宽字符串 L"",且构建系统里 g++ 要加 -fexec-charset=GBK 或 -municode(效果因 MinGW 版本而异)。
调试?别指望 Sublime 原生支持
Sublime 没有集成调试器界面。想单步、设断点、看变量,得靠外部工具:
- 简单场景:用
g++ -g编译生成带调试信息的可执行文件,然后在终端手动跑gdb ./a.out - 进阶方案:装
SublimeGDB插件(已多年未维护,兼容性差),或直接换用 VS Code +C/C++扩展(对新手更友好) - 别试图用 Sublime 的“Build”功能模拟调试——它只负责执行命令,不接管进程生命周期
真正容易被忽略的,是构建系统里那个 working_dir:它决定了相对路径读写文件时的基准目录。如果你的程序用 fopen("data.txt", "r"),而 data.txt 和 .cpp 在同一目录,working_dir 必须设为 "${file_path}",否则会找不到文件。


















