直接用shell_cmd写单行命令最省事;它将命令当字符串交由系统shell执行,避免数组格式、引号转义等问题,但需确保g++在PATH中或写全路径,macOS用g++-14,Windows推荐start cmd /c加pause防闪退,file_regex须匹配GCC 12+报错格式main.cpp:5:12: error:。

直接用 shell_cmd 写单行命令最省事
如果你只想要 Ctrl+B 一键编译+运行,且不打算调试或处理多文件项目,shell_cmd 方式最快——它把整个命令当字符串交给系统 shell 执行,不用操心数组格式、引号转义或 shell 字段开关。
常见错误是复制网上配置后发现 && 不生效,或者 Windows 下路径含空格时报错“找不到文件”。本质原因是没设 "shell": true(虽然 Sublime 默认为 true,但某些版本或 GUI 启动方式会丢掉 PATH 或禁用 shell)。
-
shell_cmd必须显式写全路径或确保g++在 PATH 中可用;macOS 上 Homebrew 安装的 GCC 常为g++-14,不能硬写g++ - Windows 用户若用 MinGW-w64,推荐加
start cmd /c "xxx & pause"防止控制台一闪退出 - 双击报错跳转依赖
file_regex,GCC 12+ 默认格式是main.cpp:5:12: error:,正则必须匹配这个结构
cmd 数组方式更适合跨平台和长期维护
当你开始写多文件项目、需要传入 -I 头文件路径或链接第三方库时,cmd 字段(数组)更可靠。它绕过 shell 解析,参数逐个传递,不会因空格、括号或重定向符号出错。
但坑在于:Windows 下不加 "shell": true,&& 和 start 就完全失效;而 macOS/Linux 下加了反而可能出兼容问题。
立即学习“C++免费学习笔记(深入)”;
- Windows 必须配
"shell": true才能执行["start", "cmd", "/c", "a.exe"] - macOS/Linux 推荐去掉
"shell": true,改用["bash", "-c", "g++ ... && ./a.out"]显式调用 shell -
${file}和${file_path}是 Sublime 内置变量,不要写成$file(旧文档常见错误)
构建系统保存位置错了就永远不生效
Sublime 只认 Packages/User/ 目录下的 .sublime-build 文件。你点 “New Build System” 后直接 Ctrl+S,如果没手动选到这个目录,文件就存到了临时位置,重启后消失,Build System 菜单里也找不到。
验证方法:Preferences → Browse Packages… → 进入 User 文件夹,确认 C++.sublime-build 确实存在且内容是你刚写的 JSON。
- 别保存成
untitled或带中文名、空格、特殊符号的文件名 - 文件编码必须是 UTF-8 无 BOM,否则 Windows 下可能解析失败
- 保存后要手动在 Tools → Build System 里勾选新系统,否则 Ctrl+B 仍走默认(通常是 Python 或空)
为什么 Ctrl+B 没反应?先查这三件事
90% 的“没反应”不是配置问题,而是前置条件断了。Sublime 不报错,只静默失败,容易误判。
- 终端里执行
g++ --version—— 如果失败,所有构建系统都白搭 - 当前文件后缀是不是
.cpp?selector里写的是source.c++,不是source.cpp - 是否打开了 .cpp 文件但光标不在编辑区?Sublime 有时对未聚焦文件不触发构建
真正麻烦的是 GUI 启动 Sublime(比如从桌面图标点开)时,Windows/macOS 不继承终端的 PATH,导致明明终端能跑 g++,Sublime 却找不到。这时要么改注册表/launchd 加全局 PATH,要么在构建系统里用绝对路径写死 g++ 位置。


















