Sublime Text 本身不编译C/C++,需先安装Ninja并配置PATH,再用CMake生成build.ninja,最后通过.sublime-build文件中"cmd": ["ninja", "-C", "build"]调用;Linux/macOS运行ninja --version验证,Windows需添加ninja.exe路径到PATH并重启终端。

Sublime Text 本身不执行编译,但可以调用 Ninja 快速构建 C/C++ 项目——前提是 Ninja 已安装、CMakeLists.txt 正确、且 Sublime 的构建系统精准指向 build/ 目录和 Ninja 可执行文件。
确认 Ninja 是否已安装并可用
Ninja 不是 Sublime 自带的,必须独立安装并确保能被命令行识别。否则 Sublime 构建时会报 sh: ninja: command not found 或 Windows 下的 'ninja' is not recognized as an internal or external command。
- Linux/macOS:运行
ninja --version;若提示未找到,用包管理器安装:sudo apt install ninja-build(Ubuntu/Debian)或brew install ninja(macOS) - Windows:下载 官方预编译二进制,解压后把
ninja.exe所在目录加入系统PATH(例如C: ools inja),重启终端验证ninja -h - 别用
cmake --build .测试 Ninja —— 它可能 fallback 到 make 或 msbuild;必须直接运行ninja命令确认
用 CMake 生成 Ninja 构建文件(关键前置)
Sublime 不解析 CMakeLists.txt,它只调用 Ninja。所以你得先在项目根目录手动跑一次 CMake 生成 build/build.ninja,否则 Sublime 构建时会提示 error: could not find build.ninja。
- 推荐 out-of-source 构建:在项目根目录执行
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release(Linux/macOS)或cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release(Windows) - 务必检查
build/目录下是否生成了build.ninja和compile_commands.json(后者对 LSP 补全/跳转也必需) - 如果 CMake 报错如
Could not find a package configuration file for "XXX",说明find_package(XXX)失败——这不是 Sublime 的问题,得先修好 CMake 配置
配置 Sublime 的 .sublime-build 文件调用 Ninja
Sublime 构建系统本质是 JSON 配置,核心是让 cmd 正确执行 ninja,且 working_dir 指向 Ninja 构建目录。放错路径或参数缺失,就会构建失败或静默无输出。
- 新建文件
ProjectName.sublime-build,保存到Sublime Text 3PackagesUser(可通过 Preferences → Browse Packages… 打开) - 内容示例(Linux/macOS):
{ "cmd": ["ninja", "-C", "build"], "working_dir": "${project_path}", "selector": "source.c, source.cpp", "variants": [ { "name": "Build Debug", "cmd": ["ninja", "-C", "build", "debug"], "env": {"CMAKE_BUILD_TYPE": "Debug"} } ] } - Windows 版需用
ninja.exe并注意路径分隔符:"cmd": ["ninja.exe", "-C", "build"];若 Ninja 不在 PATH,填绝对路径如"cmd": ["C:/tools/ninja/ninja.exe", "-C", "build"] -
-C build是关键:它让 Ninja 切换到build/目录读取build.ninja,不能写成-C ./build或漏掉-C
调试时如何让 Sublime 启动可执行文件并附带参数
Sublime 构建系统默认不支持调试器(如 gdb/lldb),但它能运行生成的二进制。若想一键编译+运行,得在 .sublime-build 里加 shell_cmd 或用 cmd 链式调用,但要注意平台差异和路径空格问题。
- 简单运行(不调试):在构建配置中追加
"shell_cmd": "ninja -C build && ./build/myapp"(Linux/macOS);Windows 用&& build\myapp.exe - 传参:用
shell_cmd更灵活,例如"shell_cmd": "ninja -C build && ./build/myapp --verbose --input test.txt" - 真正调试请用外部工具:Sublime 无法单步、设断点;推荐配合 VS Code + C/C++ 扩展,或终端手动
gdb ./build/myapp - 注意:如果可执行文件名不是默认的
myapp,需在CMakeLists.txt中用add_executable(myapp main.cpp)明确定义,否则 Ninja 构建产物名不确定
最易忽略的是 compile_commands.json 的位置和 Ninja 构建目录的同步——LSP 补全依赖前者,Sublime 构建依赖后者,两者都得在 build/ 下且由同一套 CMake 命令生成。改了 CMakeLists.txt 就得重跑 CMake,否则 Sublime 看到的还是旧规则。


















