[Delphi]DCC32自動編譯目標項目無…

最近爲方面公司內部配置管理,所有代碼提交到svn後,由CM來生成程序。
考慮到CM的能力水平,只能用批處理幫其自動編譯與打包。
因驅動都是用Delphi寫的,就給採用DCC32來編譯。

原目錄結構如下:
+build
|    |__build.cmd   編譯腳本
|
+doc
|
+lib
|
+src
    |__sample.dpr  目標項目

因自動編譯腳本放在build目錄下,出現問題如下:
1、外部Lib能自動生成dcu;
2、目標項目sample.dpr不能生成dcu,直接報無法找到 ***.dcu的錯誤。


解決方案:

1、將build.cmd移動到src目錄下
+build
|
+doc
|
+lib
|
+src
    |__build.cmd   編譯腳本
    |__sample.dpr  目標項目


2、build.cmd腳本如下:

::==========================================================
::通過註冊表查找dcc32的路徑,這裏是Delphi2007版本的
for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Borland\BDS\5.0" /v "RootDir"') do (
set app_dir=%%j
)
IF defined q (echo %q%) else (set q=0)

set compiler=%app_dir%bin\DCC32.EXE

"%compiler%" sample.dpr -m

IF %ERRORLEVEL% NEQ 0 goto error

:success
echo "驅動編譯成功!"
IF %q% NEQ 1 pause
goto end

:error
echo "驅動失敗。"
IF %q% NEQ 1 pause
goto end

:end
rem 直接返回
::==========================================================


DCC32 參數說明

選項    描述
Aunit=alias 設置單元別名
B      編譯所有單元
CC     編譯控制檯程序
CG     編譯圖形界面程序
Ddefines  編譯條件符號定義
Epath    可執行文件輸出路徑
Foffset   查找運行期間錯誤
GD     生成完整.Map文件
GP     生成.Map文件Public段
GS     生成.Map文件Segment段
H      輸出提示信息
Ipaths   文件包含路徑
J      生成.Obj目標文件
JP     生成C++類型.Obj目標文件
Kaddress  Set image base address
LEpath   包.BPL文件輸出路徑
LNpath   .dcp文件輸出路徑
LUpackage  使用運行期間包列表
M      編譯有改動的源文件
Npath    dcu/dpu文件輸出目錄
Opaths   .Obj文件(彙編目標代碼文件)路徑
P      按8.3格式文件名查找
Q      安靜模式
Rpaths   資源文件(.RES)路徑
TXext    目標文件擴展名
Upaths   單元文件路徑
V      爲Turbo Debugger生成調試信息文件
VN     以.Giant格式生成包含命名空間的調試信息文件(將用於C++Builder)
VR     生成調試信息文件.rsm
W      輸出警告信息
Z      Disable implicit compilation
$directive Compiler directives
--Help   顯示編譯選項的幫助。同樣的,如果你在命令行單獨輸入dcc32,也會顯示編譯選項的幫助。
--version  顯示產品名稱和版本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章