Delphi 子包中的包与自身冲突
Delphi package conflicts with itself in a subpackage
我继承了一个 Delphi 项目,其中大部分事情都是在单独的 Git 存储库(git 子模块)中存在的包中完成的。如果没有子包(git sub-submodules)就不会那么糟糕了。
最糟糕的是,一个git子模块被主项目使用,并作为子模块的子模块:
MainProject -> Submodule1
MainProject -> Submodule2 -> Submodule1
MainProject -> Submodule3 -> Submodule1
现在我在 Submodule1 中的三个单元之间发生了名称冲突。
我能做什么?我怎样才能让 Delphi 忽略子包中存在的单元并使其仅使用第一个嵌套级别的单元?
没有"subpackages"。每个包都是一个单独的包。但我们假设您有以下设置:
- 包1
- unit1A
- unit1B
- 单元1C
- 包2
- unit2A 使用 unit1A
- unit2B 使用 unitX
- 包3
- unit3A 使用 unit1B
- unit3B 使用 unitX
如果unit2A
、unit2B
、unit3A
或unit3B
中的任何一个需要使用package1
中的一个单位,那么package 应该在 package2
或 package3
的 requires
部分,但单位 unit1A
、unit1B
或 unit1C
不应该在这些包的contains
部分,也不应该默默地包含它们——如果发生这种情况,你会收到一条消息。
在上面的设置中,如果 unitX
不在 package1
和 package2
的 requires
部分的包中,它会被静默包含。如果这种情况发生在多个包中,则说明存在命名冲突。因此,您要么将其包含在 package2
中,也需要 package3
中的 package2
,或者将其放入自己的包中。
所以无论你做什么:
- 每件(姑且称之为A)一次只能装在一个包裹里.
- 如果另一个单元(比如 Z)需要使用它 (A),则该单元 (Z) 的包必须 reference(在
requires
部分) 包含单元 A 的 程序包 。 不应直接包含单元 A。
如果仍然存在命名冲突,请重命名单位,直到每个名称都是唯一的。
我继承了一个 Delphi 项目,其中大部分事情都是在单独的 Git 存储库(git 子模块)中存在的包中完成的。如果没有子包(git sub-submodules)就不会那么糟糕了。
最糟糕的是,一个git子模块被主项目使用,并作为子模块的子模块:
MainProject -> Submodule1
MainProject -> Submodule2 -> Submodule1
MainProject -> Submodule3 -> Submodule1
现在我在 Submodule1 中的三个单元之间发生了名称冲突。
我能做什么?我怎样才能让 Delphi 忽略子包中存在的单元并使其仅使用第一个嵌套级别的单元?
没有"subpackages"。每个包都是一个单独的包。但我们假设您有以下设置:
- 包1
- unit1A
- unit1B
- 单元1C
- 包2
- unit2A 使用 unit1A
- unit2B 使用 unitX
- 包3
- unit3A 使用 unit1B
- unit3B 使用 unitX
如果unit2A
、unit2B
、unit3A
或unit3B
中的任何一个需要使用package1
中的一个单位,那么package 应该在 package2
或 package3
的 requires
部分,但单位 unit1A
、unit1B
或 unit1C
不应该在这些包的contains
部分,也不应该默默地包含它们——如果发生这种情况,你会收到一条消息。
在上面的设置中,如果 unitX
不在 package1
和 package2
的 requires
部分的包中,它会被静默包含。如果这种情况发生在多个包中,则说明存在命名冲突。因此,您要么将其包含在 package2
中,也需要 package3
中的 package2
,或者将其放入自己的包中。
所以无论你做什么:
- 每件(姑且称之为A)一次只能装在一个包裹里.
- 如果另一个单元(比如 Z)需要使用它 (A),则该单元 (Z) 的包必须 reference(在
requires
部分) 包含单元 A 的 程序包 。 不应直接包含单元 A。
如果仍然存在命名冲突,请重命名单位,直到每个名称都是唯一的。