首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用命令行编译Delphi7项目组文件(.bpg)?

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

Stack Overflow用户
提问于 2011-07-29 23:04:50
回答 3查看 4.7K关注 0票数 3

我在一个项目组中对许多项目进行了分组。所有的信息都在project.bpg里。现在我想自动构建它们。

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

我仍然在使用Delphi 7。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-29 23:13:25

我自己从来没有试过,但是here是一篇描述你可以使用make -f ProjectGroup.bpg的德国文章,因为*.bpg本质上是makefile。

票数 7
EN

Stack Overflow用户

发布于 2011-07-29 23:45:07

您还可以从命令行或批处理文件运行Delphi,并将.bpg文件名作为参数传递。

编辑:示例(针对D2007,但可以针对D7进行调整):

=== rebuild.cmd (摘录) ===

代码语言:javascript
复制
@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
票数 1
EN

Stack Overflow用户

发布于 2012-05-22 02:54:26

正如我在评论Ulrich Gerhardt answer时所说的,如果您的项目在子目录中,则make project_group.bpg是无用的。Make不会使用相对路径,项目也不会正确编译。

我已经创建了一个python脚本来编译每个子目录中的所有DPRs。这是我真正想要做的,但我将保留上面的答案。尽管它对我不起作用,但它确实回答了我的问题。

这是我的compile_all.py脚本。我相信它可能会对某些人有所帮助:

代码语言:javascript
复制
# -*- 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文件中添加新项目。如果它在子目录中,它将被编译。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6875139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档