sublime text 可通过原生构建系统或 cmake tools 等插件实现完整 cmake 流程;简单项目用 json 配置 build system,中大型项目首选官方 cmake tools 插件;务必生成并正确配置 compile_commands.json 以支持 clangd 补全。

Sublime Text 本身不内置 CMake 支持,但通过构建系统(Build System)或插件(如 CMake Tools、CMakeBuilder)可以完整跑通 configure → build → run 流程。关键不在“能不能”,而在“选哪条路更稳、更少掉坑”。
用原生 Build System 跑 CMake(适合简单项目)
不装插件、纯 JSON 配置,适合单 target、无跨平台要求的小型 C++/Qt 项目。核心是让 cmake 和 make(或 mingw32-make)在 Sublime 内正确串联执行。
- 打开菜单 Tools → Build System → New Build System…,粘贴以下内容(Linux/macOS 示例):
{ "cmd": ["cmake", "-S", ".", "-B", "build", "-DCMAKE_BUILD_TYPE=Release"], "working_dir": "$project_path", "selector": "source.c++", "variants": [ { "name": "Build", "cmd": ["cmake", "--build", "build", "--config", "Release"] }, { "name": "Build & Run", "cmd": ["cmake", "--build", "build", "--config", "Release", "&&", "./build/myapp"] } ] } - Windows 用户注意:
./build/myapp要换成build\myapp.exe;若用 MinGW,make应换为mingw32-make,且需确保其在PATH中 - 必须手动保证项目根目录有
CMakeLists.txt,且cmake命令能在终端直接运行——否则 Sublime 构建时会报Unable to find cmake或command not found - 不要在
"cmd"里写多条独立命令(如"cmd": ["cmake ."], "cmd": ["make"]),JSON 不允许多个同名 key,会被后一个覆盖
CMake Tools 插件配置(中大型项目首选)
官方维护的 CMake Tools 插件提供 Kit 选择、configure 状态提示、target 列表、一键 build/test 等能力,比手写构建系统更可靠,尤其当项目含 Qt、Boost、多 target 或自定义 install 规则时。
- 安装后,打开整个文件夹(File → Open Folder…),不是单个
CMakeLists.txt—— 否则插件无法自动检测项目 - 按
Ctrl+Shift+P输入CMake: Configure,首次会提示选择 Kit。Kit 必须匹配你已安装的 Qt 版本和编译器,例如:Qt 6.7.2 (MinGW 11 64-bit)或Visual Studio 17 2022 - 如果 configure 失败,常见原因是:未找到
qmake(Qt 项目)、CMAKE_CXX_COMPILER路径错误、或CMakeLists.txt里find_package(Qt6 REQUIRED)没指定PATHS - 构建前务必确认状态栏显示
CMake: Ready,而不是CMake: Configuring...或报错图标
为什么 compile_commands.json 是 clangd 补全的前提?
即使 CMake 构建成功,LSP + clangd 仍可能补全失效、跳转失败——大概率因为缺少 compile_commands.json。它不是可选项,而是 clangd 解析头文件路径、宏定义、标准版本的唯一依据。
- 生成方式:进入构建目录(如
build/),运行cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..,生成的compile_commands.json默认就在该目录下 - clangd 默认只在项目根目录找这个文件。所以要么把生成的文件复制到项目根目录,要么在
LSP → Settings里显式指定路径:"configurationProvider": "compile-commands", "settings": { "compilationDatabasePath": "build/compile_commands.json" } - 手动创建
compile_flags.txt仅适用于极简项目(如只有几个源文件、无第三方 include),且必须放在项目根目录,内容不能带空行或注释
CMakeBuilder 插件常见卡点
CMakeBuilder 更轻量,但配置项分散、错误反馈弱,容易在生成器(generator)和编译器路径上栽跟头。
- 必须在
Preferences → Package Settings → CMakeBuilder → Settings – User中设置:"generator": "MinGW Makefiles", "cmake_command": "cmake", "build_command": "mingw32-make"
——漏掉"generator"会导致 CMake 默认用Unix Makefiles,在 Windows 下找不到make -
"cmake_options"里不要加-G "MinGW Makefiles",这和"generator"重复,反而可能触发 CMake 报错CMake Error: Generator ... does not match - 插件不会自动 reload
CMakeLists.txt修改。改完配置后要关掉当前窗口再重开,或手动触发CMakeBuilder: Reconfigure - 如果构建时报
Could not find compiler set in environment variable CC,说明 CMake 没识别到 MinGW 的gcc,此时要在"cmake_options"加:-DCMAKE_C_COMPILER="C:/MinGW/bin/gcc.exe" -DCMAKE_CXX_COMPILER="C:/MinGW/bin/g++.exe"
真正卡住人的往往不是某一步配错,而是多个环节隐式耦合:PATH 里的 qmake 版本和 CMakeLists.txt 里 find_package(Qt6) 不一致、compile_commands.json 路径没对上 LSP 配置、甚至 Sublime 打开的是单个文件而非文件夹导致插件静默失效。验证时优先在终端跑通对应命令,再让 Sublime 复用同一套环境。











