我在项目组中分组了很多项目。所有信息都在project.bpg中。现在我想自动构建它们。
如何使用命令行构建所有项目?
我还在使用Delphi 7。
答案 0 :(得分:7)
我自己从未尝试过,但here是德国文章,描述您可以使用make -f ProjectGroup.bpg
,因为*.bpg
本质上是makefile。
答案 1 :(得分:1)
您也可以从命令行或批处理文件运行Delphi,并将.bpg文件名作为参数传递。
编辑:示例(对于D2007,但可以针对D7进行调整):
=== rebuild.cmd(摘录)===
@echo off
set DelphiPath=C:\Program Files\CodeGear\RAD Studio\5.0\bin
set DelphiExe=bds.exe
set LibPath=V:\Library
set LibBpg=Library.groupproj
set LibErr=Library.err
set RegSubkey=BDSClean
:buildlib
echo Rebuilding %LibBpg%...
if exist "%LibPath%\%LibErr%" del /q "%LibPath%\%LibErr%"
"%DelphiPath%\%DelphiExe%" -pDelphi -r%RegSubkey% -b "%LibPath%\%LibBpg%"
if %errorlevel% == 0 goto buildlibok
答案 2 :(得分:0)
正如我对Ulrich Gerhardt的评论所说,如果你的项目在子目录中,make project_group.bpg是没用的。 Make不会使用相对路径,项目也无法正确编译。
我已经制作了一个python脚本来编译每个子目录中的所有DPR。这就是我真正想做的事情,但我会留下上面的答案。虽然它对我不起作用,但它确实回答了我的问题。
这是我的compile_all.py脚本。我相信这可能有助于某人:
# -*- coding: utf-8 -*-
import os.path
import subprocess
import sys
#put this file in your root dir
BASE_PATH = os.path.dirname(os.path.realpath(__file__))
os.chdir(BASE_PATH)
os.environ['PATH'] += "C:\\Program Files\\Borland\\Delphi7\\Bin" #your delphi compiler path
DELPHI = "DCC32.exe"
DELPHI_PARAMS = ['-B', '-Q', '-$D+', '-$L+']
for root, dirs, files in os.walk(BASE_PATH):
projects = [project for project in files if project.lower().endswith('.dpr')]
if ('FastMM' in root ): #put here projects you don't want to compile
continue
os.chdir(os.path.join(BASE_PATH, root))
for project in projects:
print
print '*** Compiling:', os.path.join(root, project)
result = subprocess.call([DELPHI] + DELPHI_PARAMS + [project])
if result != 0:
print 'Failed for', project, result
sys.exit(result)
这种方法的另一个优势是您不需要在bpg文件中添加新项目。如果它在一个子目录中,它将编译。