【问题标题】:JEDI controls always recompileJEDI 控件总是重新编译
【发布时间】:2010-03-19 14:57:45
【问题描述】:

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

有人知道这是什么原因吗?

更新:问题似乎与我系统上的子目录 jvcl\run 有关。每次我进行 Delphi 编译时,这个文件夹中的所有单元都会重新编译(即使没有接触我的项目源代码)。每次编译时,已编译的 dcus 都会在此子目录中获取和保留,即使已编译的 dcus 已存在于 jvcl\lib\d14 中。我的库路径上没有 jvcl\run。

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

【问题讨论】:

    标签: delphi delphi-2010 jedi


    【解决方案1】:

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

    要确定,请检查 Jedi DCU 编译前后的日期。

    另外,您是如何安装 Jedi 控件的?如果您使用默认安装程序,那么它们不应该编译(它们在安装时编译)。如果您只是将所有源代码放到您的库路径中,那么它们将在构建时重新编译,或者如果它们被更改(以及各种其他条件)。

    【讨论】:

    • 诀窍确实是将源代码放在包含路径之外,只保留预编译的 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,我猜你的路径中有源文件。
    【解决方案2】:

    有一些地方可以检查您的设置中的“jvcl\run”路径。

    前两个:

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

    第三个是:

    打开你的项目

    • 项目 |选项
    • 目录/条件
    • (3) 搜索路径:编辑框

    最后,如果您通过命令行编译,您需要检查您在 DCC32.CFG 和/或 PROJECTNAME.CFG 中传递的内容以及向 DCCC32 传递的命令行参数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 2015-02-06
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      相关资源
      最近更新 更多