CMake 换目录后还指向旧路径:删缓存重配置,不要手改 CMakeCache
项目改路径、换电脑或更换编译器后,旧构建树容易留下绝对路径。用 fresh 配置、Presets 和可重现验收修复。
典型症状
项目从 A 目录复制到 B 目录后,CMake 仍然报旧源目录、旧编译器或不存在的 SDK 路径;或 IDE 不断重生成错误配置。这通常不是 CMakeLists.txt 突然坏了,而是你把旧构建树也当成了源代码搬运。
1. 先保存有用证据
cmake --version
cmake --list-presets
cmake -S . -B build-clean
cmake --build build-clean若项目有 CMakePresets.json,优先使用 cmake --preset 名称。记录生成器、编译器版本、工具链文件与首个真正错误,不要只复制最后一行“build failed”。
2. 重建构建树
对可确认为生成物的 build、cmake-build-* 目录,先停止 IDE 构建,然后在项目副本上删除或改名旧构建树并重新配置。新版 CMake 可使用 cmake --fresh -S . -B build 以干净配置。不建议手工搜索替换 CMakeCache.txt 里的旧绝对路径,因为缓存与生成器产物应当作为一个构建树处理。
3. IDE 仍报错时分开验证
先在 IDE 外用新的空构建目录执行配置与编译。命令行成功而 IDE 失败,问题范围就收缩到 IDE Profile:核对生成器、工具链、构建目录和环境变量,并让 IDE 从同一 Preset 重新加载。如果命令行也失败,先修项目或工具链,不要用“重建索引”遮盖编译器的第一个真实错误。
4. 把团队配置与个人路径分开
- CMakePresets.json:CMake 官方教程定位为项目配置,可进版本控制。
- CMakeUserPresets.json:用于开发者本机配置,不应提交。
- 秘密和 SDK 绝对路径:不要写入团队 Preset;用个人 Preset、受控环境变量或工具链发现机制处理。
验收标准
- 在新的空构建目录配置和编译成功。
- 搜索新构建树时不再出现旧机器项目路径。
- 另一名开发者仅用已提交文件与自己的本机 Preset 即可重建。
官方来源
同一问题集群的免费排障页
按你当前看到的报错选一页,不需要从头阅读全部内容。
Python、JDK 与 JetBrains 项目换电脑:解释器、SDK、.idea 和依赖怎么迁移
区分源代码、团队配置、本机状态、秘密文件和可重建目录;按证据处理 Python venv、PyCharm 解释器、IntelliJ JDK、Git 凭据、Node 与 CMake。
2026 JetBrains 合法免费使用指南:学生许可、非商业使用、试用与商业订阅怎么选
不再寻找失效激活码:按学生/教师、个人非商业、商业工作、课堂部署和短期评估五种用途,核对 JetBrains 当前官方许可路径与安全迁移步骤。
PyCharm 报 No module named,终端却能运行:先对齐解释器和 pip
不要先重复安装依赖。用 sys.executable、python -m pip show、运行配置和工作目录定位 PyCharm 与终端是否使用了不同环境。
Python .venv 换电脑后失效:不要复制,用依赖定义重建
Python 官方明确将虚拟环境视为可丢弃、不可搬运的目录。本页给出换机前保存证据、目标机重建和验收步骤。
IntelliJ 无效的源发行版:区分 Project SDK、Language level 和 Gradle JVM
java -version 正常不等于项目编译链正确。逐层核对 JDK、javac、Project SDK、模块 SDK、语言级别与 Gradle JVM。
node_modules 要不要复制到新电脑?用 package-lock 和 npm ci 重建
node_modules 可能包含平台二进制、符号链接和安装脚本结果。保留 package.json、锁文件与项目 npm 配置,在目标机做可复现安装。