2

我的项目设置如下所示:

有多个运行时包。我没有使用设计时包。

每个运行时包都将其 DCP、包和单元输出目录设置为.\Library\$(Platform)\$(Config). 我不会将它们输出到全球 IDE 位置以获得不同版本的软件包的可共同安装性。

每个包中还有一个 Pre-build 事件,它调用一个脚本文件,该文件将所有dfm文件从源文件夹复制到一个名为.\Library\Dfm.

为了构建依赖包和可执行文件,我将dfm和其他文件的输出路径添加到每个依赖项本地搜索路径,例如:

..\Package1\Library\$(Platform)\$(Config)
..\Package1\Library\Dfm
..\Package2\Library\$(Platform)\$(Config)
..\Package2\Library\Dfm
..\Package3\Library\$(Platform)\$(Config)
..\Package3\Library\Dfm

从技术上讲,我只需要将 Dfm 目录添加到最终的可执行文件搜索路径,因为dfm文件链接到 PE 可执行文件资源部分。

仍然为每个包设置两条路径似乎是不必要的额外步骤。

所以我问:是否可以将dfm文件链接到bpl每个包的文件而不是最终的可执行文件?

我自己能想到的一个问题是,这仅在为可执行文件启用运行时包时才有效,因为编译器无法将资源从bpls 移动到exeelse?!

原则上是否可以将dfm资源放在与可执行文件不同的模块中?

4

1 回答 1

1

编译启用了运行时包的可执行文件时,编译器不需要访问dfm包内表单的文件。

它们确实链接到bpl文件中。

在禁用运行时包的情况下编译时,编译器会抱怨缺少dfm文件。所以它显然无法从编译的包文件(bpl)中提取资源。

于 2018-04-11T09:37:54.280 回答