delphi 2007命令行编译dcc32.cfg问题

时间:2008-11-14 20:35:55

标签: delphi

我正在使用命令行编译器进行构建。我看到的一个问题是,那里提到的路径似乎需要是文件名的简短版本,以便它们不包含任何空格。即使我已经使用了一段时间,我对此也不太了解。

我最近升级到d2009,然后问题就开始了。

有没有办法缩短路径?

我应该说我现在不急于改变使用MS Build工具。我只是想建立一个我的应用程序的旧副本&回到其他工作。

以下是dcc32.cfg-I-U-O参数的-R文件中使用的路径:

$(BDS)\LIB;$(BDS)\Imports;$(BDS)\Lib\Indy10;C:\PROGRA~1\Borland\BDS\4.0\RAVERE~1\Lib;c:\prj\lib\lib2002;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Bpl;c:\DOCUME~1\mike\MYDOCU~1\BORLAN~1\bpl;C:\Prj\Lib\LOCKBO~1\source;C:\Prj\Lib\MyComp;C:\Prj\Lib\ABBREV~1\source;C:\Prj\Lib\ZLib;C:\Prj\Lib\MinMod;C:\Prj\Lib\HELPMA~1;C:\Prj\Lib\DXGETT~1;c:\windows\system32;c:\prj\lib\xpburn;C:\Prj\Lib\WININE~1;C:\Prj\Lib\regexpr\Source;C:\Prj\Lib\VCARDR~1;C:\PROGRA~1\Raize\RC4\Lib\BDS2006;C:\Prj\Lib\jcl\lib\d10;C:\Prj\Lib\jcl\source;C:\Prj\Lib\jvcl\lib\D10;C:\Prj\Lib\jvcl\common;C:\Prj\Lib\jvcl\RESOUR~1;C:\Prj\Lib\ProE6\Delphi;C:\Prj\Lib\FastMM4;C:\Prj\Lib\OPENOF~1;C:\Prj\Lib\DEVELO~1\Library\Delphi11;C:\Prj\Lib\DEVELO~1\EX38D9~1\Sources;C:\Prj\Lib\DEVELO~1\EXBD88~1\Sources;C:\Prj\Lib\DEVELO~1\XPTHEM~1\Sources;C:\Prj\Lib\DEVELO~1\EX2EBC~1\Sources;C:\Prj\Lib\DEVELO~1\EXC5FB~1\Sources;C:\Prj\Lib\DEVELO~1\EX7C7C~1\Sources;C:\Prj\Lib\DEVELO~1\EXPRES~3\Sources;C:\Prj\Lib\DEVELO~1\EXPRES~4\Sources;C:\Prj\Lib\DEVELO~1\EXC73B~1\Sources;C:\Prj\Lib\DEVELO~1\EX7165~1\Sources;C:\Prj\Lib\DEVELO~1\EXPRES~2\Sources;C:\Prj\Lib\DEVELO~1\EXPRES~1\Sources;C:\Prj\Lib\DEVELO~1\EX749C~1\Sources;C:\Prj\Lib\DEVELO~1\EX0A1A~1\Sources;C:\Prj\Lib\Mad\madBasic\BDS4;C:\Prj\Lib\Mad\MADDIS~1\BDS4;C:\Prj\Lib\Mad\MADEXC~1\BDS4;C:\Prj\Lib\Mad\MADKER~1\BDS4;C:\Prj\Lib\Mad\MADSEC~1\BDS4;C:\Prj\Lib\Mad\madShell\BDS4;C:\Prj\Lib\Mad\madShell\DeXter;C:\Prj\Lib\Mad\madExcept\..\Plugins;

我已经从IDE的路径中复制了它,就像我在路径中所做的那样,并使用程序来缩短路径名称。

虽然该路径中没有空格,但仍无法在IdCoder.dcu找到indy的C:\Program Files\CodeGear\RAD Studio\5.0\lib\Indy10

根据d2007环境变量,$(BDS)显然会扩展为c:\program files\codegear\rad studio\5.0

IDE正在考虑此库路径有效。

为什么会这样?我打赌这是一个我没想过的简单错误!

感谢您的帮助!

5 个答案:

答案 0 :(得分:3)

您可以尝试将路径放在引号中,这是在Windows中处理带空格的路径/文件名的标准方法,尽管我从未在Delphi DCU中尝试过。

所以,而不是

$(BDS)\Lib\Indy10

"$(BDS)\Lib\Indy10"

您也可以尝试

"C:\Program Files\CodeGear\RAD Studio\5.0\lib\Indy10"

检查环境变量是否正确。

答案 1 :(得分:3)

虽然.cfg文件在Delphi 2007命令行编译器中仍然有用,但您应该使用MSBuild来编译项目。 IDE不再使用CFG文件。您设置设计时的任何编译器选项都不会写入.cfg文件。使用MSBuild并不比使用.cfg更难。如果您希望它更灵活,因为您可以更改实际的构建过程。

msbuild YourProject.dproj

答案 2 :(得分:3)

当您进行编译或构建时,Delphi实际上会为您提供输出选项卡中所需的命令行。

  1. 在Delphi中正常构建项目。
  2. 在底部会有一个名为“输出”的标签,查找一条显示“Target CoreCompile”的行(在D2007中 - 在其他版本中可能有所不同)。下面的行将是用于构建项目的命令行(这是你想要的)。顺便说一句 - 您不必等待项目完成构建,您可以在完成之前点击取消,因为您只需要DCC32命令行调用。此外,如果您已完成以前的编译,您可能需要在构建之前右键单击并清除输出,这样您就不会有很多“噪音”。
  3. 点击该行突出显示该行,然后右键单击该行并选择复制。
  4. 打开一个空的批处理文件并粘贴。 (警告,线可能很长)
  5. 现在,转到该行的开头,如果您的DCC32编译器路径包含空格,那么您需要在DCC32调用周围加上引号,不要在参数周围加上引号。
  6. 在DCC32调用上方插入一行并输入dos命令将目录设置为dpr文件所在的目录,否则DCC32会说它无法找到您的项目。例如。
    G: 然后 cd \Apps\MyProject
  7. 保存批处理文件,您就可以开始了。

答案 3 :(得分:1)

从命令行编译程序时是否设置了$(BDS)环境变量?如果没有,那可能就是问题所在。

在包含空格的路径周围放置引号可能会解决空格问题。这对我有用:

-U“C:\库的路径\第一个库; C:\库的路径\第二个库; C:\库的路径\第三个库”

答案 4 :(得分:1)

检查当前文件夹中是否有 applicationname .cfg文件。 Dcc32将首先尝试从该文件中读取配置。仅当文件不存在时才会从dcc32.cfg中读取。