sublime text能配cmake构建系统,但简单项目可用原生json构建,中大型项目(含qt、多target等)必须用cmake tools插件,否则configure卡死、target为空、find_package失败是确定结果。

Sublime Text 能不能直接配 CMake 构建系统
能,但必须分清场景:简单项目可用原生 Build System 手动写 JSON;中大型项目(含 Qt、多 target、install 规则)必须用 CMake Tools 插件——否则 configure 会卡死、target 列表为空、find_package 找不到模块都是确定结果。
手写 JSON 构建系统常见失败点
直接复制网上的 {"cmd": ["cmake ."]} 基本跑不通。关键不是语法错,而是命令链断裂:
-
cmake和make(或mingw32-make)必须在 Sublime 内部环境里可执行——Windows 用户常因没把 MinGW 的bin目录加进系统 PATH,导致报Unable to find cmake -
"cmd"字段只允许一个键值对,写两行"cmd": ["cmake ."]和"cmd": ["make"]会被后一个覆盖(JSON 不允许多个同名 key) -
cmake --build在 CMake 3.13+ 才稳定,旧版(如 3.10)会直接报Unknown option --config,得降级用make -C build或mingw32-make -C build - Windows 下路径分隔符是反斜杠,
./build/myapp在 CMD 里无效,得写成build\myapp.exe;PowerShell 更麻烦,需显式加"shell": true并用cmd /c包裹
CMake Tools 插件必须满足的三个硬条件
装完插件就按 Ctrl+Shift+P → CMake: Configure?大概率失败。它依赖三个不可绕过的前提:
- 必须通过
File → Open Folder…打开整个项目根目录(含CMakeLists.txt和源码子目录),不能只双击打开单个CMakeLists.txt文件——插件靠扫描根目录触发 - 首次 configure 时选的
Kit名称必须和本地安装严格一致,例如Qt 6.7.2 (MinGW 11 64-bit);若显示Visual Studio 17 2022却没装对应 MSVC 工具集,configure 必然卡住 - Qt 项目要让
find_package(Qt6 REQUIRED)成功,必须在CMakeLists.txt里补一句set(CMAKE_PREFIX_PATH "C:/Qt/6.7.2/mingw_64")(路径按实际调整),否则插件找不到 qmake 或 Qt 模块
clangd 补全为什么还是不工作
装了 CMake Tools ≠ 自动有智能补全。clangd 靠 compile_commands.json 驱动,而它不会自动生成——必须由 CMake 显式导出:
- 在
CMakeLists.txt顶部加set(CMAKE_EXPORT_COMPILE_COMMANDS ON),或 configure 时传-DCMAKE_EXPORT_COMPILE_COMMANDS=ON - 生成的
compile_commands.json默认在build/目录下,确保 clangd 启动时能读到它(比如 VS Code 的clangd插件默认找该文件,Sublime 需配合EasyClangComplete或手动指定路径) -
build/目录不能手动删——插件状态会错乱;要重来必须用CMake: Delete Cache and Re-configure,而不是直接删文件夹
最易被忽略的是:CMake Tools 的 Kit 选择和 CMAKE_PREFIX_PATH 设置,这两处错一点,configure 就静默失败,后续所有步骤都无意义。











