最近为方面公司内部配置管理,所有代码提交到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 "HKCUSoftwareBorlandBDS5.0" /v "RootDir"') do (
set app_dir=%%j
)
IF defined q (echo %q%) else (set q=0)
set compiler=%app_dir%binDCC32.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 显示产品名称和版本