При работе с несколькими проектами Delphi автоматизация процесса компиляции может значительно ускорить разработку. Пакетный файл (.bat) позволяет компилировать все проекты в указанной директории, собирать логи ошибок и предупреждений, а также упрощает интеграцию с CI/CD системами.
В этой статье мы рассмотрим, как создать такой пакетный файл и настроить его для автоматической компиляции проектов Delphi с сохранением результатов в лог-файл.
1. Подготовка окружения
Для компиляции проектов Delphi из командной строки используется утилита dcc32.exe (для 32-битных проектов) или dcc64.exe (для 64-битных). Она входит в состав Delphi и обычно находится в папке:
Перед созданием пакетного файла убедитесь, что путь к компилятору добавлен в переменную окружения PATH.
2. Создание пакетного файла
Создайте файл compile_projects.bat с таким содержимым:
@echo off
setlocal enabledelayedexpansion
:: Путь к компилятору Delphi (замените на ваш)
set DCC32="C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\dcc32.exe"
:: Директория с проектами
set PROJECTS_DIR="C:\Projects\Delphi\"
:: Файл для логов
set LOG_FILE="%PROJECTS_DIR%\compilation_log.txt"
:: Очистка предыдущего лога
if exist %LOG_FILE% del %LOG_FILE%
:: Компиляция всех файлов .dpr в указанной директории
for /r %PROJECTS_DIR% %%f in (*.dpr) do (
echo Compiling: %%~nxf >> %LOG_FILE%
%DCC32% -B -Q "%%f" >> %LOG_FILE% 2>&1
if !errorlevel! neq 0 (
echo [ERROR] Failed to compile: %%~nxf >> %LOG_FILE%
) else (
echo [SUCCESS] Compiled: %%~nxf >> %LOG_FILE%
)
echo. >> %LOG_FILE%
)
echo Compilation finished. Check %LOG_FILE% for details.
pause
Разбор кода:
@echo off — отключает вывод команд в консоль.
setlocal enabledelayedexpansion — позволяет использовать переменные внутри цикла.
for /r — рекурсивно ищет все .dpr файлы в указанной директории.
-B — принудительная компиляция всех модулей.
-Q — тихий режим (уменьшает вывод в консоль).
2>&1 — перенаправляет stderr (ошибки) в stdout, чтобы они попали в лог.
!errorlevel! — проверяет код завершения компилятора.
3. Альтернативный вариант: использование MSBuild
Если ваши проекты используют современные версии Delphi (RAD Studio 10+), можно использовать MSBuild для более гибкой компиляции.
Пример пакетного файла:
@echo off
setlocal
set MSBUILD="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe"
set PROJECTS_DIR="C:\Projects\Delphi\"
set LOG_FILE="%PROJECTS_DIR%\msbuild_log.txt"
if exist %LOG_FILE% del %LOG_FILE%
for /r %PROJECTS_DIR% %%f in (*.dproj) do (
echo Building: %%~nxf >> %LOG_FILE%
%MSBUILD% "%%f" /p:config=Release >> %LOG_FILE% 2>&1
if %errorlevel% neq 0 (
echo [ERROR] Build failed: %%~nxf >> %LOG_FILE%
) else (
echo [SUCCESS] Built: %%~nxf >> %LOG_FILE%
)
echo. >> %LOG_FILE%
)
echo Build finished. Check %LOG_FILE% for details.
pause
Преимущества MSBuild:
Поддержка конфигураций (Debug/Release).
Параллельная компиляция (если включено).
Более детализированные логи.
4. Дополнительные улучшения
Фильтрация логов
Можно добавить фильтрацию ошибок и предупреждений с помощью findstr:
:: Отдельный файл только для ошибок
findstr /i "error" %LOG_FILE% > "%PROJECTS_DIR%\errors_only.txt"
:: Отдельный файл только для предупреждений
findstr /i "warning" %LOG_FILE% > "%PROJECTS_DIR%\warnings_only.txt"
Параллельная компиляция
Если проекты независимы, можно ускорить процесс с помощью start /B:
for /r %PROJECTS_DIR% %%f in (*.dpr) do (
start /B cmd /c "%DCC32% -B -Q "%%f" >> %LOG_FILE% 2>&1"
)
Заключение
Автоматизация компиляции проектов Delphi с помощью пакетных файлов экономит время и упрощает отладку. Вы можете использовать dcc32/dcc64 для старых проектов или MSBuild для современных решений. Дополнительные фильтры и параллельная компиляция делают процесс еще эффективнее.
Попробуйте адаптировать приведенные примеры под свои задачи и оптимизируйте рабочий процесс!
Создание пакетного файла для автоматической компиляции проектов Delphi с логированием ошибок и предупреждений.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.