如何使用命令行编译Delphi 7项目组文件(.bpg)?

时间:2011-07-29 15:04:50

标签: delphi build continuous-integration delphi-7

我在项目组中分组了很多项目。所有信息都在project.bpg中。现在我想自动构建它们。

如何使用命令行构建所有项目?

我还在使用Delphi 7。

3 个答案:

答案 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文件中添加新项目。如果它在一个子目录中,它将编译。