Как автоматически компилировать проект в нескольких режимах сборки в Lazarus
При разработке приложений на Delphi/Lazarus часто возникает необходимость собирать один и тот же проект в разных конфигурациях: для разных платформ (Win32/Win64) и в разных режимах (Debug/Release). Вручную переключаться между этими режимами утомительно. Рассмотрим несколько способов автоматизации этого процесса.
Встроенное решение в Lazarus IDE
Самый простой способ - использовать встроенную функцию Lazarus:
В главном меню выберите Run → Compile many modes...
В открывшемся диалоге выберите нужные режимы сборки
Нажмите Compile для последовательной компиляции во всех выбранных режимах
Это решение не требует написания дополнительного кода и работает "из коробки".
Альтернативные решения
Если вам нужно больше контроля над процессом или вы хотите интегрировать сборку в CI/CD, можно использовать скрипты.
1. Скрипт для Windows (BAT)
@echo off
setlocal
:: Настройте эти пути
set LAZBUILD="C:\lazarus\lazbuild.exe"
set PROJECT="C:\path\to\your\project.lpi"
:: Последовательно компилируем все режимы
%LAZBUILD% %PROJECT% --build-mode="Debug32"
%LAZBUILD% %PROJECT% --build-mode="Release32"
%LAZBUILD% %PROJECT% --build-mode="Debug64"
%LAZBUILD% %PROJECT% --build-mode="Release64"
echo Все режимы сборки завершены!
pause
2. Скрипт для Linux/macOS (Bash)
#!/bin/bash
# Конфигурация
LAZBUILD="/usr/bin/lazbuild"
PROJECT="/path/to/your/project.lpi"
# Проверка наличия lazbuild
if ! command -v $LAZBUILD >/dev/null 2>&1; then
echo "Lazarus builder (lazbuild) не найден в PATH"
exit 1
fi
# Компиляция в разных режимах
$LAZBUILD $PROJECT --build-mode="Debug32" || exit 1
$LAZBUILD $PROJECT --build-mode="Release32" || exit 1
$LAZBUILD $PROJECT --build-mode="Debug64" || exit 1
$LAZBUILD $PROJECT --build-mode="Release64" || exit 1
echo "Все сборки завершены успешно!"
Продвинутый вариант: создание собственной утилиты на Pascal
Для более сложных сценариев можно написать собственную утилиту на Pascal, которая будет управлять процессом сборки:
program MultiBuild;
{$APPTYPE CONSOLE}
uses
SysUtils, Process;
const
LazBuildPath = 'C:\lazarus\lazbuild.exe';
ProjectFile = 'C:\projects\myapp\myapp.lpi';
BuildModes: array[0..3] of string = (
'Debug32',
'Release32',
'Debug64',
'Release64'
);
var
i: Integer;
Proc: TProcess;
ExitCode: Integer;
begin
for i := Low(BuildModes) to High(BuildModes) do
begin
WriteLn('Компиляция в режиме: ', BuildModes[i]);
Proc := TProcess.Create(nil);
try
Proc.Executable := LazBuildPath;
Proc.Parameters.Add(ProjectFile);
Proc.Parameters.Add('--build-mode=' + BuildModes[i]);
Proc.Options := [poWaitOnExit, poUsePipes];
Proc.Execute;
ExitCode := Proc.ExitCode;
if ExitCode <> 0 then
begin
WriteLn('Ошибка компиляции в режиме ', BuildModes[i],
'. Код ошибки: ', ExitCode);
Break;
end
else
WriteLn('Режим ', BuildModes[i], ' успешно собран');
finally
Proc.Free;
end;
end;
WriteLn('Процесс сборки завершен');
ReadLn;
end.
Советы по организации сборки
Раздельные выходные каталоги: Настройте каждый режим сборки так, чтобы выходные файлы помещались в отдельные каталоги (например, bin\Debug32, bin\Release64).
Уникальные имена исполняемых файлов: Можно добавлять суффиксы к именам выходных файлов (например, MyApp-debug32.exe, MyApp-release64.exe).
Автоматическое тестирование: После сборки каждого режима можно запускать автоматические тесты.
Интеграция с CI/CD: Скрипты сборки легко интегрируются в системы непрерывной интеграции (Jenkins, GitHub Actions и др.).
Заключение
Lazarus предоставляет несколько способов для автоматической компиляции проекта в нескольких режимах сборки. Выбор метода зависит от ваших потребностей:
Для простых случаев используйте встроенную функцию Compile many modes
Для автоматизации в CI/CD или более сложных сценариев используйте скрипты (BAT/Bash)
Для максимального контроля создайте собственную утилиту на Pascal
Каждый из этих подходов избавит вас от ручного переключения между режимами сборки и ускорит процесс разработки.
Способы автоматической компиляции проекта в нескольких режимах сборки в Lazarus, включая встроенные функции IDE, скрипты и создание собственной утилиты.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.