Sublime Text 本身不能运行 C++ 代码,必须依赖系统已安装的 g++(如 MinGW-w64),首要验证 g++ --version 能在终端正常输出;再配置含正确 file_regex、-std=c++17、Run 变体及 .exe 后缀的 C++.sublime-build 文件,并手动选中该构建系统。

Sublime Text 本身不能运行 C++ 代码,它只负责调用你系统里已安装的 g++(比如 MinGW-w64 提供的),所以第一步永远是确认 g++ 能在终端直接执行——否则所有 Sublime 配置都是空谈。
验证 MinGW 是否真正可用
别跳过这步。很多人卡在这里却以为是 Sublime 配置错了。
- 打开 CMD 或 PowerShell,输入
g++ --version,必须看到类似g++ (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 14.2.0的输出 - 如果报
'g++' is not recognized,说明 PATH 没配对:检查 MinGW-w64 的bin/目录(如C:mingw64in)是否完整加进了系统环境变量,且没有拼写错误或多余空格 - Windows 用户特别注意:MinGW-w64 官方推荐安装包(x86_64-posix-seh)比旧版 MinGW 或 Code::Blocks 自带的更稳定;MSYS2 安装的则需用
pacman -S mingw-w64-x86_64-gcc
创建能定位错误的 C++.sublime-build
默认构建系统不支持双击跳转到报错行,关键在 file_regex 字段必须匹配 GCC 12+ 的实际输出格式(main.cpp:5:12: error: ...)。
- 菜单栏选 Tools → Build System → New Build System…,粘贴以下内容:
{ "cmd": ["g++", "-std=c++17", "-Wall", "-g", "${file}", "-o", "${file_path}/${file_base_name}.exe"], "file_regex": "^(..[^:]*):([0-9]+):([0-9]+):\s+(error|warning):\s+(.*)$", "working_dir": "${file_path}", "selector": "source.c++, source.cpp", "variants": [ { "name": "Run", "cmd": ["cmd", "/c", "start", "cmd", "/k", "${file_path}/${file_base_name}.exe"] } ] }-
"cmd"数组写法比"shell_cmd"更可靠,尤其路径含空格时;-g是为后续调试留接口 - Windows 必须加
.exe后缀,且Run变体用cmd /k保持窗口不闪退;macOS/Linux 则去掉.exe并改用bash -c和./${file_base_name}
编译成功但控制台一闪而过?不是失败,是没暂停
这是最常被误判的问题。Sublime 构建面板默认不阻塞,C++ 控制台程序执行完立刻退出,你根本来不及看输出。
- 按
Ctrl+B编译后,再按Ctrl+Shift+B→ 选择Run变体,才能看到带暂停的 cmd 窗口 - 如果想在 Sublime 内部面板看到输出(不弹新窗口),把
Run的cmd改成:["cmd", "/c", "${file_path}/${file_base_name}.exe & pause"](注意&是 CMD 转义) - 交互式输入(如
cin >> x)在内部面板中可能失效,此时必须用弹窗方式,否则程序会卡住
中文路径或源文件含中文字符导致编译失败
MinGW-w64 默认用 UTF-8,但 Windows 控制台编码常为 GBK,二者不一致就会报“找不到文件”或乱码错误。
- 临时解决:把 .cpp 文件保存在纯英文路径下(如
D:cpphello.cpp) - 长期方案:在构建系统的
cmd中加入编译选项-finput-charset=UTF-8 -fexec-charset=GBK,确保源码读取和输出兼容 Windows 终端 - 别依赖 Sublime 的文件编码设置——
g++只认自己参数,编辑器保存为 UTF-8 BOM 或无 BOM 都不影响,关键是编译器指令
真正容易被忽略的点是:构建系统保存后,必须手动在 Tools → Build System 菜单里选中你刚建的 C++.sublime-build,否则 Sublime 仍会走默认(无效)配置;而且每次新建窗口,都要重新选一次,除非设为“Automatic”。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











