1

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

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较早编译但找不到的。

4

2 回答 2

1

你需要要么

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

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

c:\Users\YourName>dcc32

或查看 Delphi 帮助文件主题DCC32.CFG(准确搜索该帮助,不带引号):

您可以在名为 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 神秘的东西

编译器的执行就像您输入了以下内容一样:

dcc32 -IC:\DELPHI\INC;C:\DELPHI\SRC -OC:\DELPHI\ASM -UC:\DELPHI\UNITS -$R+ -$O- MYSTUFF
于 2012-12-25T04:53:21.967 回答
0

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

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

还有一个选项可以查看从 IDE 调用时 Delphi 发送给编译器的行,但我不记得他们是什么时候添加的,所以它在 Delphi 7 中可能不可用。

于 2012-12-25T04:00:00.427 回答