Sublime中g++报“not found”根本原因是GUI启动不继承终端PATH,需验证g++--version在终端有效后,Windows加MinGW-w64路径到系统环境变量并重启Sublime,macOS用g++-14或建软链,Linux/WSL2确保使用对应系统版Sublime且which g++非空。

g++ 命令在 Sublime 中报 “not found”,不是 Sublime 配置错了,而是它根本没找到系统里的编译器——GUI 启动的 Sublime 不继承终端 PATH,Windows/macOS 尤其明显。
验证 g++ 是否真可用(不只是终端里能跑)
终端里 g++ --version 有输出,不代表 Sublime 能调用。GUI 应用启动时环境变量是隔离的。
- Windows:安装 MinGW-w64 时必须勾选 “Add to PATH”;若已装完,手动把
C:mingw64in加进「系统环境变量」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++
C++.sublime-build 里该用 cmd 还是 shell_cmd
二者不能混,选错会导致路径空格崩、&& 失效、中文路径报 no input files。
- 推荐用
cmd数组格式(更可控):"cmd": ["g++-14", "-std=c++17", "-Wall", "${file}", "-o", "${file_path}/${file_base_name}"]
注意:数组里每个参数单独写,Sublime 自动加引号处理空格,不用手动包裹 - Windows 必须配
"shell": true,否则cmd字段不识别&&或start类命令 - 别用
shell_cmd写多命令(比如"g++ ... && ./a.out"):PowerShell 不认&&,Mac/Linux 的 shell 可能解析异常;若硬要用,得写成"shell_cmd": "g++-14 ... -o ... && ./${file_base_name}",且 macOS/Linux 去掉.exe后缀
为什么 Ctrl+B 编译成功但输出一闪而过
这不是错误,是 Sublime 构建面板默认行为:程序执行完就清屏。别用 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 12+ 默认输出格式是 main.cpp:5:12: error: …,必须严格匹配。
立即学习“C++免费学习笔记(深入)”;
- 正确写法:
"file_regex": "^(..[^:]*):([0-9]+):([0-9]+):?\s*(.*)$"
注意冒号后可能有空格,\s*不能少 - 错写成
^([^:]*):([0-9]+):([0-9]+):会导致双击无反应——因为实际输出末尾还有error:和空格 - 别照搬网上老教程的正则,GCC 版本升级后报错格式微调过,旧正则会失效
file_regex 是否贴合你本地 GCC 的真实输出格式——这两点一错,其他都白搭。


















