Сборка проектов Delphi из консоли
В этой заметке показано как собирать проекты Delphi с помощью bat-файла. Компиляция из консоли часто используется для сборки релизной версииopen in new window.
Файлы проектов Delphi (.dproj) совместимы с системой сборки MSBuild. Разные версии Delphi требуют разную версия MSBuild поэтому сначала желательно обновить Microsoft .NET Framework.
Также успешная сборка требует специально установленных переменных окружения. Переменные отличаются у каждой версии Delphi. Специальный файл rsvars.bat
устанавливает их, он находится в bin
, рядом c bds.exe
.
Delphi может быть установлен в любой каталог, запишем путь к rsvars.bat
в системную переменнуюopen in new window чтобы скрипт выполнялся независимо от того на какой машине выполняется.
Для примера системные переменные для Delphi 2010 и XE6
delphi2010_path = C:\Program Files (x86)\Embarcadero\Studio\14.0\bin delphiXE6_path = C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin
Скрипт для сборки
:: Устанавливаем текущую директорию - путь к файлу скрипта :: Это нужно из-за того что для файлов проектов используются :: относительные пути и скрипт должен выполнятся одинаково :: независимо от того где и как он запускается. cd %~dp0
:: Устанавливаем переменные для сборки Delphi 2010 call "%delphi2010_path%rsvars.bat"
:: Запускаем команду Clean для - удаление результатов :: предыдущей сборки (dcu, exe) c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe "Project1.dproj" /target:Clean /p:config="Release"
:: Если произошла ошибка то сразу выходим не выполняя :: следующие команды
if not %ERRORLEVEL% == 0 exit %ERRORLEVEL%
:: Собираем проекта, кофигурация сборки Release c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe "Project1.dproj" /target:Build /p:config="Release" if not %ERRORLEVEL% == 0 exit %ERRORLEVEL%
:: Устанавливаем переменные для сборки XE6 call "%delphiXE6_path%rsvars.bat"
c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe "ProjectXE6.dproj" /target:Clean /p:config="Release" if not %ERRORLEVEL% == 0 exit %ERRORLEVEL% c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe "ProjectXE6.dproj" /target:Build /p:config="Release" if not %ERRORLEVEL% == 0 exit %ERRORLEVEL%