Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как создать пакетный файл для компиляции всех проектов в Delphi с генерацией лога предупреждений и ошибок

Delphi , Синтаксис , Синтаксис

 

Введение

При работе с несколькими проектами Delphi автоматизация процесса компиляции может значительно ускорить разработку. Пакетный файл (.bat) позволяет компилировать все проекты в указанной директории, собирать логи ошибок и предупреждений, а также упрощает интеграцию с CI/CD системами.

В этой статье мы рассмотрим, как создать такой пакетный файл и настроить его для автоматической компиляции проектов Delphi с сохранением результатов в лог-файл.


1. Подготовка окружения

Для компиляции проектов Delphi из командной строки используется утилита dcc32.exe (для 32-битных проектов) или dcc64.exe (для 64-битных). Она входит в состав Delphi и обычно находится в папке:

C:\Program Files (x86)\Embarcadero\Studio\<версия>\bin\

Перед созданием пакетного файла убедитесь, что путь к компилятору добавлен в переменную окружения 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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Синтаксис ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-09 04:52:51/0.0035309791564941/0