【问题标题】:Delphi DCU files in git?git中的Delphi DCU文件?
【发布时间】:2017-07-03 07:57:49
【问题描述】:

注意:我没有 Delphi 编程经验。

我的问题:

-我想把一个同事的旧Delphi项目放到一个git repo中。

-我读到 DCU files are compiler generated 甚至发现 .gitignore 模板实际上忽略了这些文件。

-将所有内容放在一起并克隆存储库后,Delphi 编译器抱怨新克隆中缺少 DCU 文件。

-当我将 DCU 文件添加到 git 时,一切都可以正常编译。

-DCU 文件(至少大部分)在构建过程中被修改。

-很明显,DCU 文件会弄乱 git 历史记录,使 diff 难以阅读,但无法编译的项目是不可接受的。

这里出了什么问题?编译需要 DCU 文件时,代码中是否有错误?编译器在构建过程中要求文件是否正确?非常感谢任何帮助。

【问题讨论】:

  • 编译器(not 解释器)肯定会告诉您缺少哪些 DCU。查看是否有对应的 *.pas 文件,即 MyTools.pas 如果编译器抱怨缺少 MyTools.dcu。
  • 您的问题不在于缺少DCU 文件,而是编译器无法找到合适的PAS 文件来编译它们。您必须修复项目搜索路径。

标签: git delphi gitignore


【解决方案1】:

Delphi 程序是通过将您需要的 DCU 链接在一起而制作的。 pas 文件将被编译为 dcu 文件。

如果一个程序你没有所有的 pas 文件但你有 DCU 文件,那么它仍然可以编译。

所以我会尝试以下方法:尝试通过删除所有修改过的 DCU 文件来编译您的项目。

这样您可以找出您有哪些 DCU 文件的源代码,哪些没有。

【讨论】:

  • 正如 pieter 所说,DCU 是编译单元。出于显而易见的原因,不建议将二进制文件放在源代码库中。您需要项目使用的每个 .pas 单元。如果您在项目中使用 3r 方单元,请不要直接放在您的 git repo 上,
  • 谢谢!这对我来说是很好的信息。事实上,该项目包含一些 3rd 方库。我会和程序员一起检查DCU文件并报告结果。我认为 Pieter B(和其他人)的这个建议是正确的答案。
  • 如果Delphi系统无法找到某些第三方文件,请务必调整编译器选项中的搜索路径,使其能够找到它们。如果您还没有它们,请安装它们。也许您可以使用 Tools/GetIt 包管理器来安装它们,或者直接从第三方获取它们。
  • 另请注意,.dcu 是依赖于版本的。您不能将一个版本的编译器生成的 .dcus 与另一个版本的编译器生成的代码一起使用。这就是为什么大多数 Delphi 程序员更喜欢拥有所有东西的源代码(.pas、inc、dpr、.dpk)文件,这样他们可以在必要时重新编译。
【解决方案2】:

问题确实是,如 Turrican 和 Rudy Velthuis 所提到的,第 3 方库位于实际源代码中。编译项目向我们展示了哪些 dcu 文件来自第 3 方,之后我们必须为每个依赖项决定如何处理它(我们摆脱了一些,有些不得不留下,因为遗憾的是无法获得源代码)。 Rudy Velthuis 的 cmets 在这里帮了大忙。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-26
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多