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