【发布时间】:2013-03-04 18:11:34
【问题描述】:
我正在研究一个大型单元,该单元太大了,我决定将它分成 3 个单元。假设这些单元名称是Main、Common 和Objects。 Main 单元同时使用其他两个单元,Objects 单元也使用Common 单元。三个单元都有代码需要引用这些条件。
问题是,无论我在 3 个单位中的哪一个中定义这些条件,其他 2 个单位都看不到它们。我当然不想在所有 3 个单元中复制它们。我也不想在项目中定义它们,因为这些单元将被多个项目使用,在这种情况下,所有使用它的项目都不应该关心条件。
我能否以一种所有 3 个单元都能看到的方式定义这些条件,而不在项目中定义它们?
【问题讨论】:
-
您可以使用包含文件。
-
+1。不过,我不明白反对将它们放入项目文件中。如果它在那里,它不会影响使用单位的任何其他项目(只要他们使用单位而不是编译的 .dcu 文件),因为项目文件中的定义仅适用于项目所在的项目应用定义。使用这些单元的其他项目对定义一无所知,并且会在不影响任何内容的情况下编译这些单元。但是,除非其他项目知道在编译之前适当地更改包含文件,否则将它们放在包含文件中。
-
@Ken 因为无论哪个项目使用这些单元,所有项目都应该假设相同的条件,而不必担心它们。例如,10 个不同的项目可能需要完全相同的条件。另外,我需要定义 12 个条件,我不希望最终开发人员在项目中定义所有这 12 个条件,因为他们甚至没有理由知道这些条件存在。
-
这是有道理的。谢谢。 :-) 我的理解不同。
-
@KenWhite:另一个原因是项目文件一直被 Delphi 修改,并且经常被签入而不仅仅是预期的更改。为了拥有可重现的构建(调试和发布),我们一直在积极减少对 dproj 文件的依赖。我们甚至以不同的方式为每个项目注册我们依赖的库,并在我们更改库或版本时将所有项目的搜索路径重建到它们的 dproj 中。这也恰好添加了记录为项目注册了哪些库版本以及实际使用了哪些库版本的功能。
标签: delphi delphi-xe2 conditional-compilation delphi-units