问题标签 [dcu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
184 浏览

delphi - 如何停止从第三方组件重建 .dcu?

我使用许多第三方组件。他们有一个安装程序,可以编译 .pas 并自动将路径添加到库路径。

问题是当我在项目中使用组件时。编译器正在重新创建第三方组件的 .dcu。如何使编译器不再创建 .dcu?

我发现这些旧帖子报告了类似的问题。但我不太明白我是如何对编译器说的:“编译器停止重新创建第三方组件的 .dcu,并从那个地方获取 .dcu。”

如何处理第三方库中的警告/提示?

如何制作第三方组件的 DCU 文件,而不是在我的应用程序目录中生成?

0 投票
2 回答
277 浏览

delphi - 如何以表格形式查看 DCU 文件

有什么方法可以将 DCU 文件作为表单查看?

0 投票
1 回答
49 浏览

delphi - Delpi 包:我应该在“工具 - 选项 - 语言 - Delphi - 库 - 库路径”中包含源目录并每次重新编译 *.dcu 吗?

我正在从 Delphi 2009 迁移到 Delphi 10.4 Sydney,并且我正在更新我将用于组织我的 Delphi 自定义包的约定。

为了了解 Delphi 10.4 Sydney 中的工作方式,我安装了“LockBox2-2021.05-Sydney”和 Delphi 附带的标准 GetIt 包管理器,这是 Delphi 的最新成员,它显然定义了包应该如何处理的最佳实践/约定被使用和安装。

这些是我的观察:

  • GetIt 将完整的打包项目复制到 BDSCatalogRepository(现在有这样的环境变量)目录,例如 C:\Users<ME>\Documents\Embarcadero\Studio\21.0\CatalogRepository\LockBox2-2021.05-Sydney\ 并且有一个公共目录( /source) 用于.pas/ .dfm/*.fmx 文件和编译器版本相关项目文件的单独目录(例如 \packages\Sydney\Delphi)。
  • GetIt 安装将源目录(在本例中为 $(BDSCatalogRepository)\LockBox2-2021.05-Sydney\source\)添加到“工具 - 选项 - 语言 - Delphi - 库 - 库路径”。
  • 任何 Delphi 项目都会看到完整的库路径(现在包含不同包项目的无数源目录),如果我的 Delphi 项目的任何 *.pas 单元引用了库路径中的任何 *.pas 单元,则 Delphi 编译器重新编译此 *.pas 单元来自库路径,并将生成的 *.dcu 放入项目“单元输出目录”(可以是项目文件夹下的特定目录)。

这行得通,这似乎是 Delphi 10.4 Sydney 的标准处理方式。但这有点奇怪,我应该承认——每个 Delphi 项目都会为它使用的任何包重新编译 dcu。这是好习惯吗?我应该接受这种做法吗?为什么不接受?也许这种过度的重新编译是不必要的,每次都需要重新编译吗?

我的理解是“库路径”的定义对于 Delphi 2009 有点不同(“工具 - 选项 - 环境选项 - Delphi Optios - 库 - Win32 - 库路径”:我们通常以一种方式组织我们的包*.dcu 单元(来自包的源代码)在一个公共目录中,例如 D:/Library/Delphi2009 然后我们将此 D:/Library/Delphi2009 放入“库路径”,任何自定义 Delphi 项目都能够看到pacakges 中的 *.dcu 单元在库路径中可用且可见,任何 Delphi 项目都可以从 D:/Library/Delphi2009 访问这些 dcu 单元,因此,Delphi 2009 无需重新编译包 *.pas 文件每当任何 Delphi 2009 项目使用该包/组件时,将其放入包 *.dcu 单元中。

所以 - 这是对“库路径”含义的重新定义真的很奇怪 - 它是Delphi 2009 时代 .dcu 单元的目录,现在(Delphi 10.4 Sydney 时代)它是包/组件源文件的目录( .pas) 通常对每个项目可见,并且每个项目用于为包/组件编译自己的 *.dcu 单元。

真的对“库路径”的含义进行了这种重新定义吗?我真的应该将我的组件/pacakge 源代码放在我应该包含在“库路径”中的目录中吗?我真的应该要求 Delphi 编译器重新编译 dcu 单元(包的/components) 用于我的每个自定义 Delphi 项目?

当然,形式上我的问题包含多个问题,但这些只是关于如何在 Delphi 10.4 Sydney 及更高版本中组织包的最佳实践/标准的一般问题的详细信息。