DCC32.EXE命令编译控件包时,如何设置搜索路径呢? ( 积分: 100 )

  • 主题发起人 主题发起人 寻绎
  • 开始时间 开始时间

寻绎

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个控件,想尝试用DCC32的命令行方式进行编译,这个控件的目录结构是这样的,它有一个DPK目录,这个里面装的是该控件的DPK包,还有一个SOURCE目录,这个目录里是该控件的源码,我在DELPHI里手工编译该控件包时,需要在Search Path里面添加../SOURCE的路径才能正常编译安装,问题是在用DCC32的命令进行命令行方式编译时,该如何设置这个参数呢?还请各位大侠指教,谢谢了
另,直接调用
E:/Program Files/Borland/Delphi7/Bin/DCC32.exe -Q -W -H -$D- -$L- -$Y- -LN. "./Packages/***VCLD7.dpk" 命令时
出现如下提示:
"./Packages/***VCLD7.dpk(53)Fatal:File not found:'***Classes.dcu'
 
在dcc32.cfg文件中加上-u 你的lib路径(多个路径用;分割)
 
嗯,如果我不想用CFG文件来编译,只想直接用命令行和参数来编译控件包呢?有没有好办法?
 
-R 资源文件目录
-U 单元文件目录
-I 包含目录

下面是我一个工程的批处理编译
@ECHO OFF
Set UnitPath=../Unit
Set BuildFile=SgEditor.Dpr
Set OutputFile=SgEditor.Exe

Set DelphiPath=D:/Program Files/Borland/Delphi7
Set DCC32EXE="%DelphiPath%/Bin/DCC32.exe"
Set LibPath=%DelphiPath%/Lib

Set OtherPath=D:/开发/DELPHI/控件/Other
Set Rc4Path=D:/开发/DELPHI/控件/RC4/Source
Set SynEditPath=D:/开发/DELPHI/控件/SynEdit
Set VclPath=%Rc4Path%;%SynEditPath%;%OtherPath%

Set UPXEXE="D:/Program Files/程序压缩器/UPX/UPX.EXE"

Echo.
Echo Compiling %BuildFile% File...
Echo.
%DCC32EXE% -Q -B -H -W %1 -R"%LibPath%" -U"%LibPath%;%UnitPath%;%VclPath%" -I"%VclPath%" %BuildFile%
%UPXEXE% -9 --compress-icons=0 %OutputFile%
"./../Crc32Chk/CRCTool.Exe" %OutputFile% /dos /nobak
if errorlevel 1 goto error
del Unit/*.dcu > nul
del Unit/*.~* > nul
goto Success

:Success
Echo.
Echo Build Was Successful.
goto end

:error
Echo.
Echo **ERROR**
goto end

:end
pause
 
如果你不想活了我也没办法。。。
虽然说可以每次编译都加上lib,但那样就不要lib了。。。
 
唉,我要真不想活了就不会再有这精神头在这问东问七了,偏就是想活得再好一些,这不在努力着吗,不懂当然是要多问了。
风铃夜思雨来了正好,我在离线贴子里看了你的安装DEV和FR的两个贴子,对我帮助很大,谢谢了,我目前做的,也就是拿你的那两个脚本来改的,现在是好象有点眉目了,只是有些地方我还不太明白
我设置的DCC32参数大致如下
set DCC32=%DCC32EXE% -Q -B -H -W -$D- -$L- -$Y- -N0"./DCU"
然后调用
%DCC32% "./Packages/***D7.dpk" -U"%UP%;%BplPath%" -I"%UP%;%BplPath%" -LE"%BplPath%" -LN"%BplPath%"
我也曾试过想把-U"%UP%;%BplPath%" -I"%UP%;%BplPath%" -LE"%BplPath%" -LN"%BplPath%" 放到前面去设置在如下
set DCC32=%DCC32EXE% -Q -B -H -W -$D- -$L- -$Y- -N0"./DCU" -U"%UP%;%BplPath%" -I"%UP%;%BplPath%" -LE"%BplPath%" -LN"%BplPath%"
然后再这样调用就可以了
%DCC32% "./Packages/***D7.dpk"
但如果是这样来调用,编译后生成的BPL和DCP就是直接生成在这个批处理文件的当前目录下,而不是我指定的 "%BplPath%"。
但是如果是向最前面那样来调用
%DCC32% "./Packages/***D7.dpk" -U"%UP%;%BplPath%" -I"%UP%;%BplPath%" -LE"%BplPath%" -LN"%BplPath%"
的话,则可以顺利的将编译后生成的BPL和DCP文件生成到指定的"%BplPath%"目录中,这是为什么呢?还请多多指教,谢谢
 
用Delphi2007编译的话可以显示编译命令行.
例如我编译Project1.显示的命令行如下
c:/program files/delphi_2007_lite/bin/dcc32.exe -B -DDEBUG -I;"c:/program files/delphi_2007_lite/lib";"d:/My Documents/RAD Studio/5.0/Imports";"c:/program files/delphi_2007_lite/Imports";"c:/program files/delphi_2007_lite/Lib/Indy10";"C:/Documents and Settings/All Users/Documents/RAD Studio/5.0/Dcp";D:/TOOLS/FastMM478 -LE"C:/Documents and Settings/All Users/Documents/RAD Studio/5.0/Bpl" -LN"C:/Documents and Settings/All Users/Documents/RAD Studio/5.0/Dcp" -NS; -O;"c:/program files/delphi_2007_lite/lib";"d:/My Documents/RAD Studio/5.0/Imports";"c:/program files/delphi_2007_lite/Imports";"c:/program files/delphi_2007_lite/Lib/Indy10";"C:/Documents and Settings/All Users/Documents/RAD Studio/5.0/Dcp";D:/TOOLS/FastMM478;"c:/program files/delphi_2007_lite/lib";"d:/My Documents/RAD Studio/5.0/Imports";"c:/program files/delphi_2007_lite/Imports";"c:/program files/delphi_2007_lite/Lib/Indy10";"C:/Documents and Settings/All Users/Documents/RAD Studio/5.0/Dcp";D:/TOOLS/FastMM478 -R;"c:/program files/delphi_2007_lite/lib";"d:/My Documents/RAD Studio/5.0/Imports";"c:/program files/delphi_2007_lite/Imports";"c:/program files/delphi_2007_lite/Lib/Indy10";"C:/Documents and Settings/All Users/Documents/RAD Studio/5.0/Dcp";D:/TOOLS/FastMM478 -U;"c:/program files/delphi_2007_lite/lib";"d:/My Documents/RAD Studio/5.0/Imports";"c:/program files/delphi_2007_lite/Imports";"c:/program files/delphi_2007_lite/Lib/Indy10";"C:/Documents and Settings/All Users/Documents/RAD Studio/5.0/Dcp";D:/TOOLS/FastMM478 --no-config "d:/My Documents/RAD Studio/Projects/Project1.dpr"
 
Jcl给我们提供了一个比较简易的方法,我曾经用它给自己的控件写过安装程序。引用JclBorlandTools单元,其中类TJclDelphiInstallation有一个InstallPackage函数,很容易就把控件给加入到了IDE中。。。
 
多人接受答案了。
 
后退
顶部