Indy10.5.6中的FullD12.bat 不能处理含有空格的文件名和路径名,我的终极解决方案

 这个版本修正了原版中的一个变量名的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 enderror

ECHO ****************
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 enderror

move /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的搜索路径中。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值