3

IDE:德尔福 6 专业版。

我们有大项目。

我不能使用 Project Groups 来构建它们,因为我在构建时遇到了 OM 错误和奇怪的文件错误。

我的想法是我将使用 DCC32.exe 之前我与命令行参数(dcc32.cfg)发生了争执,但我认为我解决了它......

今天我尝试用它编译项目,但在第一个项目我得到了错误。

chdir c:\d\anyproject dcc32 -b any.dpr

该错误报告我找不到单位。我尝试在Delphi中编译,它是成功的。

所以我检查了这个问题。为什么以前的项目建筑是成功的,为什么这不是……?

然后我意识到这个 dpr 正在使用对子目录的引用,但并非所有文件都添加到项目中,其中更多是通过项目的“搜索路径”链接的。

但如果这是真的,那么这意味着 DCC32 没有使用项目的 DOF/CFG 文件!

所以问题在于 Delphi 合并所有内容以提供结果。它合并了全局搜索路径、项目的编译器指令、搜索路径等所有内容,并使用了项目的条件指令。

如果我理解得很好,DCC32 不用,只有 dcc32.cfg,而且我必须合并所有内容以进行编译,这是不可能的工作,因为我需要编写一个解析器来解释项目的参数,并合并与全局变量。

或者我误解了什么,问题是由我错过的其他事情引起的?

我在等你的建议!

感谢所有的想法、链接、信息等。

4

3 回答 3

11

来自以下位置的 dcc32 选项:

  1. 一个 dcc32.cfg 文件。这可以在当前目录中,也可以在与 dcc32.exe 相同的目录中。
  2. 命令行。
  3. 源代码。

我按优先级递增的顺序排列了这些。因此,源代码中指定的选项始终会覆盖 dcc32.cfg 文件或命令行中的设置。

dcc32.exe 将选择它首先找到的任何 dcc32.cfg 文件。它首先在当前目录中查找。

这一切意味着您负责从 .dof 文件中获取设置,并从 IDE 获取到命令行编译环境中。

这是您应该升级的众多原因之一。现代 Delphi 版本使用 msbuild 进行命令行编译,并且很容易确保您的命令行构建与 IDE 构建相同。

当您观看正在进行的 msbuild 时,您会看到它会调用 dcc32.exe 并在命令行中指定所有选项。将项目设置转换为对 dcc32.exe 的调用是您现在面临的问题。在 Delphi 6 中,您必须自己执行此操作。在现代 Delphi 中,工具是产品的一部分。

于 2012-11-09T12:15:30.337 回答
1

这可能会有所帮助:

http://delphi.wikia.com/wiki/Compile_from_Commandline

它描述了如何使用从 Delphi 1 到 XE3 的 Delphi 版本进行 commanline 编译,还提供了对您可能会发现有用的工具 dof2cfg 的链接。

于 2012-11-09T20:09:32.293 回答
0

IIRC 命令行编译器始终使用一个名为 dcc32.cfg 的配置文件,该文件位于当前文件夹或 dcc32.exe 所在的位置。您可以尝试将您的 .cfg 文件重命名或复制到 dcc32.cfg 并查看是否可以解决您的问题。

于 2012-11-09T12:15:07.127 回答