Как скомпилировать файл группы проектов Delphi 7 (.bpg) с помощью командной строки? - PullRequest
3 голосов
/ 29 июля 2011

Я сгруппировал много проектов в группу проектов.Вся информация в проекте .bpg.Теперь я хотел бы автоматически собрать их все.

Как собрать все проекты с помощью командной строки?

Я все еще использую Delphi 7.

Ответы [ 3 ]

7 голосов
/ 29 июля 2011

Я никогда не пробовал сам, но здесь - немецкая статья, описывающая, что вы можете использовать make -f ProjectGroup.bpg, потому что *.bpg s по сути являются make-файлами.

1 голос
/ 29 июля 2011

Вы также можете запустить 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
0 голосов
/ 21 мая 2012

Как я уже сказал в комментарии к ответу Ульриха Герхардта, 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. Если он находится в subdir, он скомпилируется.

...