我将许多项目分组到了一个项目组中。所有信息都在project.bpg文件中。现在,我想要自动构建它们。
如何使用命令行构建所有项目?
我仍在使用Delphi 7。
我将许多项目分组到了一个项目组中。所有信息都在project.bpg文件中。现在,我想要自动构建它们。
如何使用命令行构建所有项目?
我仍在使用Delphi 7。
你也可以从命令行或批处理文件中运行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
正如我在对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文件中。如果它在子目录中,它将被编译。