Delphi 绝地控制总是重新编译

Delphi 绝地控制总是重新编译,delphi,delphi-2010,jedi,Delphi,Delphi 2010,Jedi,我刚刚注意到,每当我对我的Delphi 2010项目进行增量编译(ctrl-F9)时,我的项目中引用的所有绝地单位都在重新编译,尽管它们没有以任何方式进行更改。事实上,如果我创建一个新项目,在表单上删除一个绝地控件并进行编译,我会看到所有绝地依赖项都被重新编译。如果我认为第二次按ctrl-F9而不对项目进行任何更改,同样的情况也会发生 有人知道这是什么原因吗 更新:问题似乎与我的系统上的子目录jvcl\run有关。每次我进行Delphi编译时(即使不涉及我的项目源代码),都会重新编译此文件夹中的

我刚刚注意到,每当我对我的Delphi 2010项目进行增量编译(ctrl-F9)时,我的项目中引用的所有绝地单位都在重新编译,尽管它们没有以任何方式进行更改。事实上,如果我创建一个新项目,在表单上删除一个绝地控件并进行编译,我会看到所有绝地依赖项都被重新编译。如果我认为第二次按ctrl-F9而不对项目进行任何更改,同样的情况也会发生

有人知道这是什么原因吗

更新:问题似乎与我的系统上的子目录jvcl\run有关。每次我进行Delphi编译时(即使不涉及我的项目源代码),都会重新编译此文件夹中的所有单元。编译后的DCU在每次编译时都会保留在该子目录中,即使编译后的DCU已经存在于jvcl\lib\d14中。我没有在我的库路径上运行jvcl\n


此外,如果我将jvcl\run目录移动到硬盘上的其他位置,我的项目将成功编译和链接,可能会在jvcl\lib\d14(在我的路径上)中找到DCU。

有时,即使没有重新编译,也会在编译进度屏幕上看到单元名称闪烁

要想确定,请在编译前后检查绝地DCU的日期


还有,你是如何安装绝地控制装置的?如果您使用默认安装程序,那么它们永远不应该编译(它们是在安装时编译的)。如果您只是将所有源代码都放到库路径中,那么它们将在生成时重新编译,或者如果它们被更改(以及各种其他条件)。

在您的设置中有一些用于检查“jvcl\run”路径的设置

前两项:

  • 工具|选项
  • 环境选项| Delphi选项| Library-Win32
    • (1) “库路径:”编辑框
    • (2) “调试DCU路径:”编辑框
三是:

打开你的项目

  • 项目|选项
  • 目录/条件
  • (3) 搜索路径:编辑框
最后,如果通过命令行进行编译,则需要检查DCC32.CFG和/或PROJECTNAME.CFG中传递的内容以及DCCC32的命令行参数


编译后的DCU被放在源代码所在的目录中的原因是因为您没有设置“单元输出目录”

诀窍确实是将源代码排除在includepath之外,只保留预编译的DCU。否则,如果对定义进行更改或触摸源文件,将强制重新编译.dcu到处乱飞(这将使后续编译复杂化)。我安装这些控件已有一段时间(几个月),但没有看到这种行为。检查我的DCU时,我看到jvcl\run中的所有DCU都显示了我上次编译的日期和时间,三分钟前。它是该子目录中的每一个单元,包括一些我怀疑在任何引用链中的单元——比如JvFormPlacement。所有其他子目录都有最初的安装日期(2009年11月19日)。@Marco:重新编译的是jvcl\run中的单元,即使这些单元是在jvcl\lib\D14子目录中预编译的。我最近没有对jvcl的位置进行任何更改。jvcl\lib\D14位于我的库路径中;jvcl\run不在我的库路径中(但在我的“浏览路径”中)。有什么建议吗?Larry,JVCL源目录应该在您的浏览路径中,JVCL DCU目录应该在您的搜索路径中。这两个目录不能是一个文件夹。始终将编译文件与源文件分开。如果你不告诉Delphi源代码在哪里,那么它就不会试图编译它。@Larry,我猜你的路径中有一些源文件。