Delphi编译和构建有什么区别?

使用Delphi-6有两种选择:构建和编译.

我知道当我运行一个程序时,它只编译已经更改的文件,并为没有的文件使用DCU.当我单击构建显然它重建了DCU.

我一直在想的是,当我做一个程序发布(更改构建设置,条件变量等),我可以编译,还是我必须做一个完整的构建?

如果我不做全面的建设,会发生什么,有什么一致性吗?

解决方法

编译时,编译时?

当.pas源文件的日期戳记改变时,编译器只会自动重新编译单元(1,2).

在项目的其他状态更改(指令,调试或其他编译器设置等)中,编译器将不会自动重新编译.那就是当你需要强制一个构建.

当.inc或其他包含($I)文件(3))更改(3)时,还需要强制重建,因为它们的日期戳记未被选中.

因此,总而言之,除了单位.pas文件之外的任何内容,您都需要进行构建.

建筑有一些奇怪的情况.大部分的结果出现在“找不到单位xxx”错误

>一个是项目中单位的路径错误,或者在工作目录错误时使用相对路径. (见Delphi debug a wrong unit)
(我不完全相信这个,这是一个假设).由于CRC(1),一个.dcu被重新编译,但是新编译的dcu被放在一个不同的目录中.这不是当前编译的问题(因为正确的dcu已经被加载),而是在随后的编译(例如依赖程序包)中,再次找到旧的dcu文件,而不是 – >错误.如果有疑问,总是通过递归删除所有DCU清理您的构建目录
>在.dpr文件中提到了错误的路径

(1)如果Delphi就像FPC一样,.dcu包含所有dcu的接口部分的CRC.这可以用来检查是否还需要重新编译.例如.由于文件系统操作(移动dcu的)

(2)对于专家,也看看{$implicitbuild xx}

(3)与德尔福相反,FPC确实重建了.inc的变化. FPC项目在内部大量使用.inc文件,这一变化已经在Delphi支持之前.因此,将“将”inc文件复制到任何目录中的软件包将无法使用FPC进行编译,因为它们的大小和CRC通常略有不同. Indy(10)是一个很好的例子.

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...