在Delphi6 professional IDE中使用DCC32编译项目

在Delphi6 professional IDE中使用DCC32编译项目,delphi,delphi-6,Delphi,Delphi 6,IDE:Delphi6专业版 我们有大项目 我无法使用项目组全部构建它们,因为我在构建时遇到了OM错误和奇怪的文件错误 我的想法是使用DCC32.exe 首先,我和命令行参数(dcc32.cfg)发生了冲突,但我认为我解决了它 今天我试图用它来编译项目,但在第一个项目中我遇到了错误 chdir c:\d\anyproject dcc32-b任意.dpr 错误告诉我找不到单位。我试着用Delphi编译,结果成功了 所以我检查了这个问题。为什么以前的项目建筑是成功的,为什么这不是 然后我意识到这个d

IDE:Delphi6专业版

我们有大项目

我无法使用项目组全部构建它们,因为我在构建时遇到了OM错误和奇怪的文件错误

我的想法是使用DCC32.exe 首先,我和命令行参数(dcc32.cfg)发生了冲突,但我认为我解决了它

今天我试图用它来编译项目,但在第一个项目中我遇到了错误

chdir c:\d\anyproject dcc32-b任意.dpr

错误告诉我找不到单位。我试着用Delphi编译,结果成功了

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

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

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

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

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

或者我误解了什么,而问题是由我错过的其他东西引起的

我在等你的建议


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

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

dcc32选项位于以下位置:

  • 一个dcc32.cfg文件。这可以在当前目录中,也可以在与dcc32.exe相同的目录中
  • 命令行
  • 源代码
  • 我把这些按优先顺序排列。因此,源代码中指定的选项始终覆盖dcc32.cfg文件或命令行中的设置

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

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

    这是您应该升级的众多原因之一。现代的Delphi版本使用msbuild进行命令行编译,并且可以轻松地确保命令行生成与IDE生成相同

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

    这可能有助于:


    它描述了如何使用Delphi 1到XE3的Delphi版本进行commanline编译,并链接到您可能会觉得有用的工具dof2cfg。

    您使用的是哪一版本的Delphi?使用现代的Delphi,可以在命令行中使用msbuild编译.dproj文件。在此之前,这是一个痛苦的屁股。德尔福6专业-(如果您仍停留在Delphi6上,请至少投资Finalbuilder。您会感谢我的。@DavidHefferman:“在现代Delphi中,工具是产品的一部分。”如何做到这一点?我复制(并粘贴到包含MSBuild调用的批处理文件中)IDE消息窗口中的命令行。它非常笨拙。有更简单的方法吗?@Robert这正是重点。您不再调用dcc32。您将调用msbuild。我的生成命令如下所示:
    msbuild或caflex.dproj/t:Rebuild/p:Config=Release;Platform=Win32
    。然后msbuild解码.dproj文件并构造immense dcc32命令行。它执行所有编译前和编译后的操作。等等。现在我不理解它…今天我尝试了一个空项目,尝试了各种技巧,看看会发生什么。我用dcc32构建了它,它成功了-exe包含了项目的cfg/dof中的特殊条件。我可以构建很多项目有了它,其中只有一个例外…我用直接路径将所需文件放入dpr,但dcc说“b.pas”丢失,然后“c.pas”无法编译…:-(我发现了,-D选项不使用“”引用文本。但是我的老板在条件中使用空格。比如“x y z”-Dx y z表示另一个参数…如果我手动引用,编译就可以了!啊,条件中的空格!!