【发布时间】:2026-01-29 15:50:01
【问题描述】:
上下文:
MainProject 依赖于仅标头依赖项Module。
MainProject 和 Module 都是:
- 仍在开发中,可能会修改
- 现代 CMake 项目
- Github 上的独立存储库
- 由我控制
问题:
几个月前,我尝试使用 CMake 和版本控制来管理这种依赖关系,但没有成功。迫于最后期限,我最终选择了“最简单的解决方案”,将项目Module 的标题复制粘贴到MainProject 中。开发MainProject 导致在Module 本地副本 中添加功能和修改接口。现在有两个发散的Module。
它是如何工作的
-
如果
Module非常稳定,它可能会起作用(复制/粘贴标头实际上是我选择稳定且我没有所有权的依赖项的解决方案)。 -
对于我想要进行的每个修改,我都可以修改/提交/推送/重新复制/重新粘贴
Module存储库。但我当然没有,因为……时间和期限。
问题
现在我想退出这个解决方案(ie,反映对初始 Module 项目的修改)并选择更好的依赖管理策略。
我能想到的
- 在
Modulegit 项目上创建一个新分支update,复制粘贴修改后的版本,提交并使用git diff检查与分支master的差异 - 使用这三种方法中的一种或组合使用(但我不知道如何选择)
- git 子模块
- git 子树
- C++20 模块
【问题讨论】:
标签: c++ git dependencies git-submodules git-subtree