如何使用命令行编译包

时间:2012-12-25 03:19:15

标签: delphi delphi-7

我是德尔福的新手。我尝试使用命令行编译项目中的一个包,我收到以下错误

dxmdaset.pas Fatal:F1026 File not found: CompatLib_DXE.dcp

我使用以下批处理文件

BuildAll.bat

call rsvars.bat     
set COMPILER=%BDS%\bin\DCC32.EXE
echo Compiler: %COMPILER%
echo.
MD "%CURRENT_DIR%\..\bin"
MD "%CURRENT_DIR%\..\bin\bpl"
MD "%CURRENT_DIR%\..\bin\dcu"
cd %CURRENT_DIR%\..\bin\bpl
del *.bpl /q
del *.dcp /q
del *.drc /q
del *.map /q
cd %CURRENT_DIR%\%VCLFOLDER%\RemObjects SDK
del wo3p_03_DXE.* /s/q

:Build_CompatLib
echo ...Building CompatLib...
echo.
cd %CURRENT_DIR%\%VCLFOLDER%
call BuildCompatLib.bat

:Build_DevExpress_Old
echo ...Building DevExpress...
echo.
cd %CURRENT_DIR%\%VCLFOLDER%
call BuildDevExpress.bat old

BuildCompatLib.bat

@echo off
if "%COMPILER%" == "" goto no_compiler
echo Building ComaptLib Component Library:
set COMPILER_OPTIONS=%2 %3 %4 %5 %6 %7 %8 %9
set COMAPTLIB_ROOT=%CD%\Compatibility
if not "%2" == "" echo You specified these dcc32 options: %COMPILER_OPTIONS%
if     "%2" == "" echo Recreating all DCUs then linking td32 info and writing a detailed 
map file.

if     "%2" == "" set COMPILER_OPTIONS=-q -b -gd -v
echo.
:CompatLib
cd %COMAPTLIB_ROOT%
echo Compiling CompatLib_DXE %COMPILER_OPTIONS%
echo.
     "%COMPILER%" CompatLib_DXE.dpk %COMPILER_OPTIONS%

if ERRORLEVEL 1 goto error
echo.
:end_ComaptLib
echo no errors in building CompatLib packages
echo.
echo.
goto end
:error
echo.
echo ERROR! building CompatLib packages: %~f0
echo.
pause
:end

BuildDevExpress.bat

@echo off
rem Compiler defined in calling batch file
if "%COMPILER%" == "" goto no_compiler
echo Building DevExpress Component Libraries:
set COMPILER_OPTIONS=%2 %3 %4 %5 %6 %7 %8 %9
set DEVEXPRESS_ROOT=%CD%
if not "%2" == "" echo You specified these dcc32 options: %COMPILER_OPTIONS%
if     "%2" == "" echo Recreating all DCUs then linking td32 info and writing a detailed map file.
if     "%2" == "" set COMPILER_OPTIONS=-q -b -gd -v
echo.
:DevExpressCommon
:DevExpressMemData
set PKG_LOCATION=DevExpress\ExpressMemData\Delphi 7\Sources
rem set PKG_LOCATION=DevExpress New\ExpressMemData\Packages
cd %DEVEXPRESS_ROOT%\%PKG_LOCATION%
echo Compiling dxmds_DXE.dpk %COMPILER_OPTIONS%
echo.
     "%COMPILER%" dxmds_DXE.dpk %COMPILER_OPTIONS%
echo Compiling dcldxmds_DXE.dpk %COMPILER_OPTIONS%
echo.
     "%COMPILER%" dcldxmds_DXE.dpk %COMPILER_OPTIONS%
if ERRORLEVEL 1 goto error
cd %DEVEXPRESS_ROOT%
echo.

编译dcldxdms_dxe.dpk时出错。它实际上是在寻找先前编译但无法找到它的compatlib_dxe.dcp

2 个答案:

答案 0 :(得分:1)

你需要

  • 包括正确的命令行开关和编译器命令行的路径,或
  • 在提供它们的项目文件夹中提供DCC32.CFG文件。

要查找编译器所需的开关,只需从命令行运行dcc32,不带参数(或使用/?--help):

c:\Users\YourName>dcc32

或查看DCC32.CFG的Delphi帮助文件主题(完全搜索帮助,不带引号):

  

您可以在名为DCC32.CFG的配置文件中设置选项列表,除了在命令行上输入的选项外,还将使用该文件。配置文件中的每一行对应于在实际命令行参数之前插入的额外命令行参数。因此,通过创建配置文件,您可以更改任何命令行选项的默认设置。

     

命令行编译器允许您多次输入相同的命令行选项,忽略除最后一次出现之外的所有选项。这样,即使您使用配置文件更改了某些设置,仍然可以在命令行上覆盖它们。

     

当dcc32启动时,它会在当前目录中查找DCC32.CFG。如果在那里找不到该文件,则dcc32将在DCC32.EXE所在的目录中查找。

     

这是一个示例DCC32.CFG文件,定义包含,对象和单元文件的一些默认目录,以及更改$ O和$ R编译器指令的默认状态:

-IC:\DELPHI\INC;C:\DELPHI\SRC

-OC:\DELPHI\ASM
-UC:\DELPHI\UNITS
-$R+

-$O-
  

现在,如果您输入:

     

dcc32 MYSTUFF

     

编译器的执行方式就像您键入以下内容一样:

dcc32 -IC:\DELPHI\INC;C:\DELPHI\SRC -OC:\DELPHI\ASM -UC:\DELPHI\UNITS -$R+ -$O- MYSTUFF

答案 1 :(得分:0)

从IDE编译时,Delphi将添加项目设置的库路径以及Delphi自己的库路径。

如果从命令行编译,则需要将所有这些作为参数添加到编译器中。

还有一个选项可以看到Delphi在从IDE调用时发送给编译器的行,但我不记得他们何时添加它,因此它可能在Delphi 7中不可用。