如何在不生成EXE的情况下构建Delphi项目

时间:2015-11-26 10:31:40

标签: delphi build linker delphi-xe3

我想知道是否有办法使用dcc32构建.dpr,但跳过链接部分。我在一个非常大的项目上工作,这个项目被分成了用于模块化编译的子项目。问题是每个子项目在编译时都会生成一个绝对不必要的EXE文件,这一步也会增加构建时间。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果子项目仅仅是为了便于模块化编译(正如您在问题评论中所提到的那样)那么这种“优化”构建的尝试至少部分地导致了您试图消除的延迟。

在IDE中构建时,编译器将只编译自上次编译以来已更改的单元。您的子项目迫使编译器至少对涉及的单位进行两次评估。每个子项目一次,然后再次“真实”项目。

此外,编译器必须为每个子项目链接并发出EXE。您说的EXE实际上并不是项目构建的输出所必需的。

通过简单地消除多余的“子项目”,您将缩短构建时间。

如果子项目添加了其他一些值,例如提供自动化测试覆盖率,那么这些项目的开销可能会被认为是值得的,但这似乎并非如此。

要记住的另一件事是编译器根据每个单元是否自己更改来决定是否重新编译单元。但是,如果条件指令或其他编译器设置已更改,则应重新编译所有单元,否则不会应用更改的编译器设置的效果(如果这些更改的设置为自身,则本身会导致奇怪的行为和错误适用于某些单位 - 变更单位 - 而非其他单位。

在IDE下构建时,这需要您记住在更改编译器设置后执行完整构建。在专用的构建过程中,通常建议始终在“洁净室”环境中执行完整构建。这是在每次构建之前或之后删除所有编译副产品(dcu等)。

注意:通过这些冗余的子项目,您必须确保所有子项目和“主”项目的编译器设置保持一致,从而为自己创造了更多的工作和潜在的麻烦。