我在一个项目组中对许多项目进行了分组。所有的信息都在project.bpg里。现在我想自动构建它们。
如何使用命令行构建所有项目?
我仍然在使用Delphi 7。
发布于 2011-07-29 23:13:25
我自己从来没有试过,但是here是一篇描述你可以使用make -f ProjectGroup.bpg的德国文章,因为*.bpg本质上是makefile。
发布于 2011-07-29 23:45:07
您还可以从命令行或批处理文件运行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发布于 2012-05-22 02:54:26
正如我在评论Ulrich Gerhardt answer时所说的,如果您的项目在子目录中,则make project_group.bpg是无用的。Make不会使用相对路径,项目也不会正确编译。
我已经创建了一个python脚本来编译每个子目录中的所有DPRs。这是我真正想要做的,但我将保留上面的答案。尽管它对我不起作用,但它确实回答了我的问题。
这是我的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文件中添加新项目。如果它在子目录中,它将被编译。
https://stackoverflow.com/questions/6875139
复制相似问题