IDE:Delphi 6 Professional。
我们有大项目。
我无法使用项目组来构建它们,因为我在执行此操作时遇到了OM错误和奇怪的文件错误。
我的想法是我将使用DCC32.exe 之前我与命令行参数(dcc32.cfg)打架,但我认为我解决了它...
今天我尝试用它编译项目,但是在第一个项目中我遇到了错误。
chdir c:\ d \ anyproject dcc32 -b any.dpr
错误报告我发现没有找到一个单位。我试图在Delphi中编译,但它很成功。
所以我检查了问题。为什么以前的项目建筑成功,为什么这不是......?
然后我意识到这个dpr正在使用对子目录的引用,但并不是所有添加到项目中的文件,其中更多是通过项目的“搜索路径”链接的。
但如果这是真的,那么这意味着DCC32没有使用该项目的DOF / CFG文件!
所以问题是Delphi合并了所有内容以提供结果。 它合并了全局搜索路径,项目的编译器指令,搜索路径,所有内容,以及使用项目的条件指令。
如果我理解得很好,DCC32不使用,只有dcc32.cfg,我必须合并编译的所有内容,这是一项不可能的工作,因为我需要编写一个解析器解释项目的参数,并与全局变量合并。
或者我误解了一些问题,问题是由我错过的其他事情造成的?
我在等你的建议!
感谢所有想法,链接,信息等。
答案 0 :(得分:9)
dcc32选项:
我按照优先顺序排序。因此,源代码中指定的选项始终会覆盖创建dcc32.cfg文件的设置,或者在命令行上。
dcc32.exe将选择它首先找到的dcc32.cfg文件。它首先在当前目录中查找。
这一切意味着您负责从.dof文件获取设置,并从IDE进入命令行编译环境。
这是您升级的众多原因之一。现代Delphi版本使用msbuild进行命令行编译,并且很容易确保命令行构建与IDE构建相同。
当您观看正在进行的msbuild时,您会看到它会调用dcc32.exe,并在命令行中指定所有选项。将项目设置转换为对dcc32.exe的调用是您现在面临的问题。在Delphi 6中,您必须自己完成。在现代的Delphi中,这些工具是产品的一部分。
答案 1 :(得分:1)
这可能会有所帮助:
http://delphi.wikia.com/wiki/Compile_from_Commandline
它介绍了如何使用Delphi 1到XE3的Delphi版本进行命令行编译,还链接到dof2cfg工具,您可能会发现它有用。
答案 2 :(得分:0)
IIRC命令行编译器始终使用在当前文件夹或dcc32.exe所在的位置找到的名为dcc32.cfg的配置文件。您可以尝试将.cfg文件重命名或复制到dcc32.cfg,看看是否能解决您的问题。