Sublime Text不原生支持CMake,中大型项目必须用CMake Tools插件;手写JSON构建系统仅适用于极简单场景,否则configure卡死、build报Unknown option --config等错误必然发生。

Sublime Text 本身不支持 CMake 原生集成,中大型 C++ 项目必须用 CMake Tools 插件,手写 JSON 构建系统只适用于极简单目录、无 Qt/Boost/多 target 的场景——否则 configure 卡死、build 报 Unknown option --config、target 列表为空都是必然结果。
为什么直接写 cmd 调 cmake --build 会失败
常见现象是构建面板报 Unable to find cmake 或 Unknown option --config,根本原因不是 Sublime 配置错,而是命令链没对齐:
-
cmake和make(或mingw32-make)必须在 CMD/PowerShell 中能直接运行;Windows 用户若用 MinGW,make实际命令名是mingw32-make,不能照抄 Linux 配置 -
cmd字段只允许一个键值对,写两行"cmd": ["cmake ."]和"cmd": ["make"]会被后一个覆盖——JSON 不允许多个同名 key -
cmake --build是 CMake 3.13+ 才稳定支持的接口,旧版(如 3.10)会直接报错;必须降级用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:
组合式C++代码评审方案,融合静态分析、AI推理、多轮迭代评审和C++专项检查,适用于PR审查、增量代码审查、全项目评审和代码质量评分,触发词包括review cpp、cpp代码评审、C++review、代码审查。
- 正确操作是
File → Open Folder…,选整个项目根目录(含CMakeLists.txt和源码子目录) - 首次
CMake: 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 显式导出:
立即学习“C++免费学习笔记(深入)”;
- 配置 CMake 时加
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON,例如:cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - 构建后该文件会出现在
build/目录下;不要把它移到项目根目录以外的位置,除非你明确配置了compilationDatabasePath -
LSP-clangd默认只在项目根目录找compile_commands.json,所以要么把生成的文件软链接过去,要么在 LSP 配置里指定路径 - 如果用了
add_subdirectory()或外部库,确保CMAKE_EXPORT_COMPILE_COMMANDS在最外层CMakeLists.txt设置,否则子目录可能漏掉
最易被忽略的一点:CMake Tools 插件的状态完全依赖缓存与 Kit 元数据,一旦 build/ 目录被外部工具(比如手动 rm -rf)破坏,插件不会自动恢复——它只会静默失效,连错误提示都不给。这时候别改构建系统,先执行 CMake: Delete Cache and Re-configure。

















