cmake tools 更新后 kit 列表变空是因插件主动清空旧缓存以避免兼容问题,需彻底关闭vscode、执行scan for kits并验证编译器路径;手动kit须用绝对路径、删无效字段且重启生效;configure失败还需删除build目录和cmakecache.txt并检查configureargs兼容性。

CMake Tools 插件更新后 Kit 列表变空、configure 直接失败,不是插件“坏了”,而是它重置了 kit 缓存并拒绝加载旧格式或路径失效的配置。
Kit 列表突然为空:插件更新会清空旧缓存
4.3.x 及之后版本的 CMake Tools 在更新后会主动丢弃之前扫描到的 kit 数据,不再复用旧 cmake-kits.json 或注册表快照。这不是 bug,是设计行为——防止跨版本兼容问题导致误选过时编译器。
实操建议:
- 彻底关闭所有 VSCode 窗口(包括系统托盘残留进程),再重新打开;
- 按
Ctrl+Shift+P→ 输入CMake: Scan for kits,等 3–5 秒,看右下角是否弹出 “Found X kits” 提示; - 如果仍无响应,检查终端能否运行
g++ --version或cl.exe,确认编译器本身没被卸载或 PATH 被重置; - macOS 用户注意:
xcode-select --install后若换过 Xcode 版本,必须补运行sudo xcode-select --switch /Library/Developer/CommandLineTools,否则 scan 会跳过。
手动添加 kit 失效:新版本校验更严格
更新后,CMake Tools 对手动 kit 的字段合法性做校验:compilers.CXX 必须指向真实可执行文件(不能是软链接别名)、name 不能含非法字符、visualStudio 字段在非 Windows 上会被静默忽略。
常见错误现象:
- 编辑
cmake-kits.json后点CMake: Select a Kit,列表里没出现新增项; - kit 名称显示为 “Unknown” 或直接不加载;
- configure 时报
No CMAKE_CXX_COMPILER could be found,但终端里/opt/rk3588-toolchain/bin/aarch64-linux-gnu-g++ --version完全正常。
实操建议:
- 确保
compilers.CXX值是绝对路径,且该路径下文件存在、有执行权限(Linux/macOS 用ls -l确认); - Windows 上避免用
g++.exe的相对路径(如..mingw64ing++.exe),一律写完整路径D:\mingw64\bin\g++.exe; - 删掉 kit 配置里的
visualStudio或visualStudioArchitecture字段(除非你真在用 MSVC); - 改完
cmake-kits.json后,必须重启 VSCode,仅 reload window 不生效。
configure 仍失败但 kit 已选中:CMake 缓存未清理
插件更新前的 configure 结果(CMakeCache.txt、build/ 下中间文件)可能残留旧 toolchain 设置,导致新 kit 被无视。CMake 不会自动覆盖冲突缓存。
实操建议:
- 删除整个
build/目录(别只删里头的文件); - 在 VSCode 中执行
CMake: Delete Cache and Reconfigure(不是单纯的CMake: Configure); - 如果项目用了交叉编译,确认
CMAKE_TOOLCHAIN_FILE路径在CMakeLists.txt或settings.json中仍有效——插件更新不会帮你修路径; - Linux/macOS 用户若用
build-essential,更新后检查/usr/bin/g++是否还在,某些发行版升级会把 g++ 拆进单独包(如g++-12),PATH 没变但默认g++符号链接可能断开。
最常被忽略的一点:插件更新后,VSCode 的 cmake.configureArgs 和 cmake.buildArgs 设置若含已废弃参数(比如老版本支持的 -G "MinGW Makefiles" 而新版本只认 Ninja),会导致 configure 静默失败且无提示。务必检查这些自定义参数是否与当前 CMake 版本兼容。











