sublime text不原生支持cmake,简单项目用json构建系统调用cmake/make,中大型项目必须用cmake tools插件;需确保cmake可执行、正确配置kit、生成compile_commands.json供clangd补全。

Sublime Text 本身不支持 CMake 原生集成,所谓“配置 CMake 构建系统”本质是选对路径:简单项目用 JSON 构建系统硬连 cmake 和 make,中大型项目必须用 CMake Tools 插件——否则 configure 失败、target 不识别、Qt 找不到库都是必然结果。
为什么直接写 cmd 数组调 cmake 会失败
常见现象是构建面板报 Unable to find cmake 或 command not found,甚至 configure 成功但 build 报 Unknown option --config。这不是 Sublime 的锅,而是命令链没对齐。
-
cmake和make(或mingw32-make)必须在终端能直接运行;Windows 用户若用 MinGW,make命令名实际是mingw32-make,不能照抄 Linux 配置 -
cmd字段只允许一个键值对,写两行"cmd": ["cmake ."]和"cmd": ["make"]会被后一个覆盖——JSON 不允许多个同名 key -
cmake --build是 3.13+ 才稳定支持的接口,旧版 CMake(如 3.10)会直接报错 Unknown option,必须降级用make -C build或mingw32-make -C build - Windows 路径分隔符是反斜杠,
./build/myapp在 CMD 下无效,得写成build\myapp.exe;PowerShell 更麻烦,需显式加"shell": true并用cmd /c包裹
CMake Tools 插件必须打开文件夹,不是打开单个 CMakeLists.txt
插件靠扫描项目根目录下的 CMakeLists.txt + 缓存 + Kit 元数据联动工作。如果只是双击打开一个 CMakeLists.txt 文件,插件压根不会激活,Ctrl+Shift+P 里搜不到 CMake: Configure。
- 正确操作是
File → Open Folder…,选整个项目根目录(含CMakeLists.txt和源码子目录) - 首次 configure 时提示选择 Kit,Kit 名称必须和你本地安装的编译器/Qt 版本严格匹配,例如
Qt 6.7.2 (MinGW 11 64-bit);若显示Visual Studio 17 2022却没装对应 MSVC 工具集,configure 必然卡住 - Qt 项目常见失败原因是
find_package(Qt6 REQUIRED)没指定PATHS,导致插件找不到qmake或cmake配置模块;需在CMakeLists.txt里补一句set(CMAKE_PREFIX_PATH "C:/Qt/6.7.2/mingw_64")(路径按实际调整) - configure 后生成的
build/目录不能手动删,否则插件状态错乱;要重来就用CMake: Delete Cache and Re-configure
如何让 clangd 补全真正可用
光有 CMake Tools 不等于有智能补全。clangd 需要准确的 compile_commands.json,而它不会自动生成——必须由 CMake 显式导出。
- 在
CMakeLists.txt顶部加set(CMAKE_EXPORT_COMPILE_COMMANDS ON),或 configure 时加-DCMAKE_EXPORT_COMPILE_COMMANDS=ON - configure 完成后,检查
build/compile_commands.json是否存在且非空;若为空,说明 CMake 没真正跑完 target 解析(常见于add_executable路径写错或 source 文件 glob 失败) -
clangd插件(如 EasyClangComplete 或官方 clangd)必须设置compilation_database_folder指向build/,不是项目根目录 - 别指望
compile_commands.json能自动更新:每次增删源文件或改CMakeLists.txt后,必须手动CMake: Configure,否则补全会漏符号或跳转错行
最易被忽略的一点:CMake Tools 的 build 操作默认不清理旧对象,增量构建可能复用错误的依赖缓存;真要确保干净,得先 CMake: Clean Build Folder 再 Build——尤其在切换 Qt 版本或编译器后。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











