CMake构建开源项目报错Failed to checkout tag 'master'相关问题咨询
问题解答
CMake 检出失败的处理逻辑
你当前使用的是 CMake 的 ExternalProject_Add 功能拉取依赖,该模块的 Git 操作逻辑是固定的:
- 当你没有显式指定
GIT_TAG参数,或指定的引用(分支/标签/Commit hash)不存在时,旧版 CMake 会默认使用硬编码的master作为目标引用尝试检出 - 一旦检出步骤执行失败,CMake 会直接终止整个构建流程,没有自动探测仓库默认分支、尝试其他引用的逻辑,不会自动切换到 main 分支继续执行后续的编译操作。
报错根因
你修改配置时仅替换了 GIT_REPOSITORY 的地址,遗漏了原配置中的 GIT_TAG 264 行,CMake 找不到指定的标签配置,就用默认值 master 尝试检出,而你 Fork 的 OpenSfM 仓库默认分支为 main,自然找不到 master 引用触发报错。
修复方案
你可以根据自身需求选择任意一种方案修改 CMake 配置:
- 如果你需要和原项目保持相同的依赖版本,补回原有的
GIT_TAG 264配置即可(需确保你 Fork 的仓库已同步原仓库的264标签) - 如果你需要使用自己 Fork 仓库的默认 main 分支,显式添加配置
GIT_TAG main - 如果你想始终拉取远程仓库的默认分支、不需要硬编码分支名,可以配置
GIT_TAG origin/HEAD
内容的提问来源于stack exchange,提问作者omer faruk kalkan
相关产品推荐
相关产品推荐

