gpt4 book ai didi

git - Delphi包在子包中与自身冲突

转载 作者:行者123 更新时间:2023-12-03 19:49:00 25 4
gpt4 key购买 nike

我继承了一个 Delphi 项目,其中大部分事情都是在单独的 Git 存储库(git 子模块)中存在的包中完成的。如果没有子包(git sub-submodules)就不会那么糟糕了。

最糟糕的是,一个 git 子模块在主项目中使用,并作为子模块的子模块:

MainProject -> Submodule1
MainProject -> Submodule2 -> Submodule1
MainProject -> Submodule3 -> Submodule1

现在我在 Submodule1 中的三个单元之间存在名称冲突。

我能做什么?我怎样才能让 Delphi 忽略子包中存在的单元并让它只使用第一个嵌套级别的单元?

最佳答案

没有“子包”。每个包本身就是一个包。但是让我们假设您有以下设置:

  • 包1
  • 单元1A
  • 单元1B
  • 单元1C
  • 包2
  • unit2A 使用 unit1A
  • unit2B 使用 unitX
  • 包3
  • unit3A 使用 unit1B
  • unit3B 使用 unitX

  • 如果有任何 unit2A , unit2B , unit3A , 或 unit3B需要使用 package1 中的单位,那么那个包应该在 requires package2的部分或 package3 , 但单位 unit1A , unit1Bunit1C应该 不是 contains这些包的一部分,也不应该默默地包含它们——如果发生这种情况,你会收到一条消息。

    在上面的设置中,如果 unitX不在 requires 的包中 package1的部分和 package2 ,它被默默地包含在内。如果这种情况发生在多个包中,则存在命名冲突。因此,您可以将其包含在 package2 中并要求 package2来自 package3也可以,或者您将其放入自己的包装中。

    所以无论你做什么:
  • 每个单元 (我们称它为A)一次只能装在一个包裹里 .
  • 如果另一个单元(比如 Z)需要使用它(A),则该单元(Z)的包必须引用(在 requires 部分中)包含单元 A 的包。 A单元不应直接包含 .

  • 如果仍然存在命名冲突,请重命名单元,直到每个名称都是唯一的。

    关于git - Delphi包在子包中与自身冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41101857/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com