首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi条件编译

Delphi条件编译
EN

Stack Overflow用户
提问于 2010-06-23 18:20:28
回答 3查看 554关注 0票数 1

我需要知道是否有任何选项,以编译一个delphi项目,只有当源代码或任何使用的单元,包等已被更改。

如果这是不可能的,第二个选择:是否有任何选项,以生成完全相同的二进制编译相同的项目两次。

谢谢。

编辑:该用法适用于基于散列的WebUpdate。

EN

回答 3

Stack Overflow用户

发布于 2010-06-23 20:18:52

Delphi的“编译”将只编译更改过的单元。但是如上所述,单元有数据,所以编译器可以检查哪些需要更新,哪些不需要。并且可执行文件可能会更改,因为构建过程可能会重新排列可执行文件。您的web更新不应该使用文件哈希,它应该使用版本信息来决定更新什么和不更新什么。这是安装程序检查哪些文件应该被替换的方式。

票数 2
EN

Stack Overflow用户

发布于 2010-06-23 18:48:44

Delphi在编译时只编译已更改的单元,并且编译所有单元,而不考虑构建中的更改状态。

在二进制级别上,Exe永远不会相同。我刚创建了两个项目,将exe重命名为具有txt扩展名,并将它们与Beyond Compare进行了比较:它显示了差异。

票数 0
EN

Stack Overflow用户

发布于 2010-06-24 00:10:11

一个(困难的)解决方案:使用Makefile创建你的exe文件!makefile允许你说“这个exe是从那些文件中生成的,使用那些命令”。如果你列出的构成你的exe的文件中至少有一个比你的exe新,Make将只运行“那些命令”。

其中最难的部分是设置组成exe的文件列表:您可以很容易地获得DPR/DPROJ中列出的文件列表,但您还需要确定所有链接的资源($R)、所有包含的文件($INCLUDE)以及由Delphi隐式编译的所有文件,因为它们在“used”子句中使用,并且可以在库路径中找到。

为一般情况生成Makefile是非常困难的,但对于一个特定的项目,它可能会起作用。例如,您可能认为您的文件仅依赖于DPR文件中列出的文件,然后确保将所有相关文件添加到DPR中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3100752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档