这个版本修正了原版中的一个变量名的bug, 能够支持任何含有空格的文件名和目录名.
红色的那行在原版本中含有BUG,感兴趣的可以拿原版本来比较一下。这个BUG会导致编译不成功。
SET NDD12=D:/RAD Studio/6.0
以上这行要改成你机器上的D2009的目录名。
更新过的FullD12.bat如下:
[quote]
REM echo off
if (%1)==() goto test_command
if (%1)==(start) goto start
goto endok:test_command
if (%COMSPEC%)==() goto no_command
%COMSPEC% /E:9216 /C %0 start %1 %2 %3
goto endok:no_command
echo No Command Interpreter found
goto endok:start
REM call clean.bat
REM computil SetupD12
set BUILDROOT=%CD%
pushd lib
REM SET NDD12=Point to your delphi first level directory which include 'bin'
SET NDD12=D:/RAD Studio/6.0
SET NDWINSYS=%BUILDROOT%/system32
set D12DCC=%NDD12%/bin/dcc32.exe
set BINOUTDIR=%BUILDROOT%/D120/bin
set DCUOUTDIR=%BUILDROOT%/D120/intermediate/release/lib
set DCPOUTDIR=%BUILDROOT%/D120/intermediate/release/dcp
set LIBOUTDIR=%BUILDROOT%/D120/lib/release
set HPPOUTDIR=%BUILDROOT%/D120/include/vcl
set DCCSWTS=-B -N0"%DCUOUTDIR%" -NH"%HPPOUTDIR%" -NO"%LIBOUTDIR%" -NB"%LIBOUTDIR%" -U"%BUILDROOT%/D120/intermediate/release/lib" -Ic"%BUILDROOT%/D120/intermediate/release/lib" -LN"%BUILDROOT%/D120/intermediate/release/dcp"
set BCBSWTS=-JPHNE -JL
REM set DCCDWTS=-I%BUILDROOT%/D120/intermediate/release/lib -U%BUILDROOT%/D120/intermediate/release/dcp -LU%BUILDROOT%/D120/intermediate/release/dcp
REM SET DCCSWTS=-U%BUILDROOT%/D120/intermediate/release/lib -I%BUILDROOT%/D120/intermediate/release/lib -LN%BUILDROOT%/D120/intermediate/release/dcp
if exist setenv.bat call setenv.bat
if not exist "%BINOUTDIR%" md "%BINOUTDIR%" >nul
if not exist "%DCUOUTDIR%" md "%DCUOUTDIR%" >nul
if not exist "%LIBOUTDIR%" md "%LIBOUTDIR%" >nul
if not exist "%HPPOUTDIR%" md "%HPPOUTDIR%" >nul
if not exist "%DCPOUTDIR%" md "%DCPOUTDIR%" >nul
del /s /f /q "%BUILDROOT%/D120"
if ("%NDD12%")==() goto enderrorECHO ****************
ECHO Compile System
ECHO ****************
CD System
call "%BUILDROOT%/clean.bat"
"%NDD12%/Tools/brcc32.exe" IndySystem120.rc
echo ready to compile System
"%D12DCC%" IndySystem120.dpk /Oobjs /m /h /w /N"%BUILDROOT%/D120" -$d-l-n+p+r-s-t-w- %DCCSWTS% %BCBSWTS% %2 %3 %4
REM %D12DCC% -B IndySystem120.dpk /Oobjs /m /h /w /N../../D120 -$d-l-n+p+r-s-t-w- -U%BUILDROOT%/D120/intermediate/release/lib -I%BUILDROOT%/D120/intermediate/release/lib -LN%BUILDROOT%/D120/intermediate/release/dcp
if errorlevel 1 goto enderror
REM copy *120.bpl ../../D120 >nul
REM copy *120.dcp ../../D120 >nul
REM copy ../../D120/IndySystem120.bpl %NDWINSYS% >nul
move /y IndySystem120.bpl "%BINOUTDIR% "
CD ..ECHO **************
ECHO Compile Core
ECHO **************
CD Core
call "%BUILDROOT%/clean.bat"
"%NDD12%/Tools/brcc32.exe" IndyCore120.rc
"%NDD12%/Tools/brcc32.exe" dclIndyCore120.rc
"%D12DCC%" IndyCore120.dpk /Oobjs /m /h /w /N"%BUILDROOT%/D120" /U"%DCUOUTDIR%" -$d-l-n+p+r-s-t-w- %DCCSWTS% %BCBSWTS% %2 %3 %4
if errorlevel 1 goto enderror
"%D12DCC%" dclIndyCore120.dpk /Oobjs /m /h /w /z /N"%BUILDROOT%/D120" /U"%DCUOUTDIR%" -$d-l-n+p+r-s-t-w- %DCCSWTS% %BCBSWTS% %2 %3 %4
if errorlevel 1 goto enderror
move /y *120.bpl "%BINOUTDIR%" >nul
REM copy *120.dcp ../../D120 >nul
CD ..ECHO *******************
ECHO Compile Protocols
ECHO *******************
CD Protocols
call "%BUILDROOT%/clean.bat"ECHO ************************
ECHO IdCompressionIntercept
ECHO ************************
"%D12DCC%" -B -M -N"%BUILDROOT%/D120" /U"%DCUOUTDIR%" -H -W -Z IdCompressionIntercept.pas -$d-l- %DCCSWTS%
if errorlevel 1 goto enderror"%NDD12%/Tools/brcc32.exe" IndyProtocols120.rc
"%NDD12%/Tools/brcc32.exe" dclIndyProtocols120.rc
"%D12DCC%" IndyProtocols120.dpk /Oobjs /m /h /w /N"%BUILDROOT%/D120" /U"%DCUOUTDIR%" -$d-l-n+p+r-s-t-w- -I../D120 %DCCSWTS% %BCBSWTS% %2 %3 %4
if errorlevel 1 goto enderror
"%D12DCC%" dclIndyProtocols120.dpk /Oobjs /m /h /w /N"%BUILDROOT%/D120" /U"%DCUOUTDIR%" -$d-l-n+p+r-s-t-w- %DCCSWTS% %BCBSWTS% %2 %3 %4
if errorlevel 1 goto enderrormove /y *120.bpl %BINOUTDIR% >nul
REM copy *120.dcp ../../D120
copy "%BUILDROOT%/D120/intermediate/release/dcp/*indy*120.dcp" "%DCPOUTDIR%"
CD ..goto endok
:enderror
echo Clean and exit
call "%BUILDROOT%/clean.bat"
echo Error!
:endok
popd
[/quote]
编译完成之后生成如下目录结构:
D120---BIN
|--include
|--intermediate--release--dcp
|--lib
|--lib--release
bin 下所有的文件 copy to d2009下的bin下
lib 下所有的文件 copy to d2009下的lib下
release 下所有bpi和lib文件 copy to d2009下的lib下
include 下的文件 是C++用的,copy to d2009下的include/indy10下
确保以上目的目录在d2009的搜索路径中。