根本原因是GUI启动的Sublime未继承shell的PATH环境变量,导致g++不可见;需先终端验证g++--version,macOS用g++-14并建软链,Windows安装MinGW时勾选Add to PATH并重启Sublime,Linux/WSL2确保使用对应系统版Sublime且which g++非空。

Ctrl+B 没反应?command not found?双击错误行跳不到代码?——90% 不是配置写错了,而是 g++ 根本没被 Sublime 看见。GUI 启动的 Sublime(桌面图标、Dock、开始菜单)不读你的 ~/.zshrc 或 Windows 用户级 PATH,终端能跑 ≠ Sublime 能调。
确认 g++ 真正可用,而不是“以为可用”
别跳过这步。打开终端(macOS/Linux)或 CMD(Windows),执行:g++ --version
有输出才说明装好了。但重点在下一步:
- macOS:Homebrew 安装的 GCC 实际命令名通常是
g++-14(也可能是g++-13或g++-15),运行ls /opt/homebrew/bin/g++*确认真实名称;想用g++命令,得手动建软链:sudo ln -s /opt/homebrew/bin/g++-14 /usr/local/bin/g++ - Windows:MinGW-w64 安装时必须勾选 Add to PATH;若已装完,手动把
C:\mingw64\bin加进「系统环境变量」PATH,然后彻底关闭并重启 Sublime - Linux/WSL2:确保用的是 Linux 版 Sublime(不是 Windows 版),且
which g++有返回值;WSL2 用户若从 Windows 启动 Sublime,它根本访问不到 WSL 里的g++
C++.sublime-build 必须用 shell_cmd,别碰 cmd 数组
尤其 Windows 用户,cmd 数组写法如 ["g++", "${file}", "-o", "${file_base_name}"] 在路径含空格、中文或未继承环境变量时会静默失败,你连报错都看不到。
- 推荐写法(保存为
Packages/User/C++.sublime-build):{ "shell_cmd": "g++-14 -std=c++17 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\"", "file_regex": "^(..[^:]*):([0-9]+):([0-9]+):? (.*)$", "working_dir": "${file_path}", "selector": "source.c++, source.cpp" } -
shell_cmd走系统 shell 解析,自动处理引号和空格,适合单文件快速测试 - macOS/Linux 若用
g++命令指向 clang++,必须写全名g++-14,否则编译器版本太老或不支持-std=c++17 - Windows 用户若用 PowerShell,默认不识别
&&,要么切回 CMD,要么把&&换成;(但后续运行变体就别用shell_cmd连写编译+运行了)
错误行双击跳转失效?file_regex 配错了
GCC 报错格式是 main.cpp:5:12: error: …,正则少一个字符,双击就白点。
- 必须用这个:
"file_regex": "^(..[^:]*):([0-9]+):([0-9]+):? (.*)$" - 别改它——哪怕你用的是 GCC 12/13/14,这个正则都匹配;改了反而跳不到
- 验证方法:故意写个语法错误(比如
int x = ;),Ctrl+B编译,看错误行是否高亮且可双击跳转
Ctrl+Shift+B 运行后窗口一闪而过?不是构建系统问题
Sublime 构建面板执行完就清屏,是设计如此。程序退出即关窗,和 Sublime 无关。
立即学习“C++免费学习笔记(深入)”;
- 最稳解法:在
main()结尾加std::cin.get();,回车才退出(跨平台、无安全风险) - 别用
system("pause"):Windows 专属、跨平台失效、还可能被杀软拦截 - 如果硬要在构建系统里加暂停,Windows 可用:
"shell_cmd": "cd \"${file_path}\" && start cmd /c \"\"${file_path}/${file_base_name}.exe\" & pause"
macOS/Linux 改用:"shell_cmd": "cd \"${file_path}\" && ./${file_base_name}; read -p \"Press enter to continue\""
subl,Windows 用户重启后验证 CMD 里 g++ --version,这两步漏掉,后面全白配。


















