g++必须在终端和Sublime中均能直接调用,否则所有构建配置无效;需验证PATH继承(Windows加MinGW路径、macOS用g++-14或建软链、Linux/WSL2用对应系统版Sublime),并严格匹配file_regex与GCC报错格式。

g++ 必须在终端和 Sublime 里都能直接调用,否则所有构建配置都无效——这是唯一前提,不是可选项。
确认 g++ 真正可用,而不是“终端里能跑就行”
GUI 启动的 Sublime 不继承你 shell 的 PATH,所以即使 g++ --version 在 Terminal 或 CMD 里有输出,Sublime 仍可能报 command not found。
- Windows:安装 MinGW-w64 时勾选 “Add to PATH”,或手动把
C:\mingw64\bin加进「系统环境变量」PATH,然后彻底关闭并重启 Sublime - macOS:Homebrew 安装的 GCC 默认叫
g++-14(不是g++),运行ls /opt/homebrew/bin/g++*确认真实名称;想用g++命令就得建软链:sudo ln -s /opt/homebrew/bin/g++-14 /usr/local/bin/g++ - Linux / WSL2:确保用的是 Linux 版 Sublime(不是 Windows 版),且
which g++有输出;WSL2 用户若从 Windows 启动 Sublime,它根本访问不到 WSL 内的g++
shell_cmd 和 cmd 数组怎么选?
二者不能混用,选错会导致路径含空格时报 no input files、&& 失效、中文路径崩掉。
- 用
shell_cmd:适合写单条 shell 命令,比如"g++ -std=c++17 \"${file}\" -o \"${file_path}/${file_base_name}\"";Windows/macOS/Linux 都能跑,不用加"shell": true - 用
cmd数组:更可控,每个参数单独写,Sublime 自动处理空格和引号,例如:"cmd": ["g++-14", "-std=c++17", "${file}", "-o", "${file_path}/${file_base_name}"];但 Windows 必须配"shell": true,否则&&或start类命令不生效
为什么编译成功但输出一闪而过?
这不是构建系统 bug,是程序执行完控制台就退出了。别依赖 system("pause")——跨平台失效,还可能被杀软拦截。
- 最稳解法:在
main()结尾加std::cin.get();,回车才退出 - Windows 想弹窗运行:用 variants +
cmd /c start cmd /k,例如:"cmd": ["cmd", "/c", "start", "cmd", "/k", "${file_path}/${file_base_name}.exe"] - macOS/Linux 直接运行:
"cmd": ["bash", "-c", "cd '${file_path}' && ./${file_base_name}"]
file_regex 配错,双击错误行就跳不到源码
GCC 实际报错格式是 main.cpp:5:12: error: ...,你的正则必须严格匹配这个结构,否则双击错误行没反应。
立即学习“C++免费学习笔记(深入)”;
- 正确写法:
"file_regex": "^(..[^:]*):([0-9]+):([0-9]+):? (.*)$" - 常见错配:
^([^:]*):([0-9]+):([0-9]+):—— 少了空格和冒号后内容,导致匹配失败 - 验证方法:故意写个语法错(比如漏分号),看构建面板里错误行是否能双击跳转
PATH,以及 file_regex 和实际报错格式对不上——这两点不盯死,其他都白调。


















