如何在现代Delphi中组织共享单元?

HNR*_*are 6 delphi

十多年来,我一直被困在Delphi 6上,并且在逻辑(对我来说)单元结构中开发了数十万行代码,其中一个项目往往是几百行引用的代码.我的"图书馆"中的水平工作惯例.在尝试迁移到XE5时,我找不到将所有库单元编译在搜索路径上的一个位置,然后只是由项目使用(并在必要时重新编译),但是dcus关闭的方法使用库源而不是每个项目.

我刚开始接受"hello world"在XE5中占用2.5Mb,我不能理解每个库单元必须在项目级别单独编译成dcus.在"旧"时代,这些单元dcus将位于pas文件旁边,如果源文件中没有任何更改,则不会重新编译.

显而易见的地方是项目选项,但我找不到正确的设置让项目停止保存每个dcu的副本.

我隐约意识到多平台开发会导致重组,但我不禁感到有一些妥协的立场.

必须有一些我不知道的大事.

Jer*_*dge 1

从 Delphi XE2 开始,Delphi 支持多个平台的编译以及不同的构建配置。因此,Delphi 需要为每个组合创建 DCU 文件。例如,Win32、Win64和OS-XDCU 文件默认保存在单独的文件夹中。否则,如果不是这样,DCU 文件将相互覆盖,您应该避免这种情况(如果您使用不同的配置/平台)。

这些设置可以在第一部分的项目选项中Delphi Compiler通过修改Unit output directory. 默认情况下,它.\$(Platform)\$(Config)会为平台创建一个子文件夹,然后为配置创建另一个子文件夹,例如\Win32\Debug\. 请注意Target最顶部的 ,默认情况下设置为您当前的平台/配置。您通常希望首先将其更改为All Configurations. 如果您从选项中完全清除此字段,它将产生旧版本的默认行为。

听起来您应该创建一个Package。这将允许您将所有“库”单元集中到一个地方 (BPL)。然后可以将该包安装到您的 IDE 中,如果您有任何组件,则可以将这些组件安装到您的组件托盘中。

或者您也可以不使用包裹。不过,所有这些不同项目的所有单元都应该移动到这个中心位置 - 一个包含所有“库”单元的文件夹。这样可以减少维护工作,您只需将该文件夹添加到全局库路径即可。

如果您将文件放在中央文件夹中,并使用项目中的这些文件,则该项目和此“库”的 DCU 文件都将为该项目保存。Delphi 不知道这些文件是一个“库”,它只知道您正在使用它们,并且由于它找不到这些单元的已编译版本,因此它会在您的项目中创建一个。如果您希望 DCU 文件仅保存一次并保存在这个中心位置,那么您将需要一个包。

  • @HNRSoftware,是的,就像“$(DELPHI)\Lib”组织的那样。将源代码放置在某个目录中(添加到浏览路径),为每个受支持的平台和配置组合构建它们,将 dcus 放置到相应的目录中并将该目录添加到库路径中。 (2认同)
  • 如果您想减轻疼痛,请停止使用 Ansisstring (2认同)