处理 cmake 重复的 git 子树

Posted

技术标签:

【中文标题】处理 cmake 重复的 git 子树【英文标题】:Handle cmake duplicated git subtrees 【发布时间】:2018-03-18 18:04:21 【问题描述】:

我有一个 cmake git 存储库,其中包含一个我在许多项目中使用的库,名为 core

我有另一个 cmake git 存储库,其中包含 core 作为子树中的依赖项。该项目创建了一个库plot

现在我有一个新的 git 存储库,它需要 plotcore 作为依赖项,我也将它们作为子树包含在内。现在我的项目结构是:

myproject
|
|-Thirdparty-subtrees
  |
  |-core
  |-plot
    |
    |-Thirdparty-subtrees
      |
      |-core

现在,当我想用​​ cmake 构建 myproject 时,它告诉我我有两个同名的项目 core,因为该项目被定义了两次。

我可以删除第一级core子树,但是它会变成一个隐藏的依赖,如果由于某种原因plot会删除core子树,我就会遇到问题。我想在第一级子树文件夹中维护显式依赖。

所以我想知道如何使用 CMake 检查是否存在两个具有相同名称的目标,在这种情况下通过消息通知它并只构建一个项目而丢弃另一个(我想如果两个目标有同名,他们是同一个项目)。

我怎样才能只正确构建一次core

【问题讨论】:

How to handle a transitive dependency conflict using Git submodules and CMake?的可能重复 【参考方案1】:

尽管看起来很像,但 Git 并不是用来作为依赖管理工具的。为此,您最好使用其他工具。

【讨论】:

我知道。我想知道如何使用 CMake 以便仅包含一次由于子树管理而在我的树中重复的项目。 啊,也许我误解了这个问题。道歉。

以上是关于处理 cmake 重复的 git 子树的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能推送这个最新的 Git 子树?

git lfs 使用指针文件处理 repo 中的重复文件

在 Git 中导出带有历史记录的子树

Git 中的供应商分支

LeetCode - 相同子树替换后最长重复子串多米诺骨牌

如何配置 CMake 目标或命令来预处理 C 文件?