Сборка Delphi проектов через MSBuild

MSBuild — это консольная утилита от Microsoft, которая входит в состав .NET Framework. В некотором роде она является аналогом Make и предназначена для автоматической сборки проектов.

До 2000-х версий Delphi информация о проекте сохранялась в *.dpr и *.cfg файлах. Для сборки проекта можно было воспользоваться консольным компилятором dcc32, передав ему путь к *.dpr.

Сейчас Delphi «косит» под Visual Studio, сохраняя всю важную для сборки проекта информацию в файле *.dproj. Этот файл имеет xml-формат, совместимый с утилитой MSBuild. Т.е. теперь можно собирать Delphi-проект прямо с консоли, без лишних телодвижений.

Зачем такое надо и об особенностях сборки dproj утилитой MSBuild и пойдет речь…

Начну с ответа на вопрос «Зачем?»:

  1. Главное преимущество: для сборки проекта не нужно запускать RAD Studio (которая загружается не очень быстро).
  2. Комплексная сборка: если разработчик работает над коробочным приложением, то кроме компиляции exe-файла еще надо собрать справку, создать программу инсталляции и т.д. Всё это можно сделать одним bat-файлом.

«Как?». Очень просто. Для этого необходимо создать bat-файл рядом с *.dproj и наполнить его следующим содержимым:

@echo off
call rsvars.bat
c:WindowsMicrosoft.NETFrameworkv2.0.50727MSBuild.exe MyProject.dproj
pause

Ключевым моментом есть вызов файла rsvars.bat. Он находится в  папке «C:Program FilesCodeGearRAD StudioX.0bin» и устанавливает необходимые переменные окружения. Без него работать не будет 🙂

Несколько замечаний:

  • Если в папке только один *.dproj файл — его имя можно не указывать
  • Можно установить переменную окружения %Config% в «Debug» или «Release» — на выходе получим соответственную версию исполняемых файлов
  • По умолчание будет выполнена цель «Build». Можно задать цель явно, добавив параметр командной строки /t:<имя цели> к вызову MSBuild
  • Группа проектов *.groupproj тоже имеет MSBuild-совместимый формат, т.е. можно (и нужно!) группу проектов собирать через один групповой проект
Реклама
Предыдущая запись
Следующая запись
Оставьте комментарий

7 комментариев

  1. Это что, MSBuild понимает паскаль?

    Ответить
    • Frantic

       /  Октябрь 22, 2010

      MSBuild не понимает языков программирования. Он понимает XML, в котором описано что нужно делать и с какими файлами. Последние версии Delphi поставляются с XML-ками, в которых рассказано как собирать Delphi-проект. Вызов rsvars.bat устанавливает нужные переменные среды, что бы MSbuild нашел CodeGear.*.Targets файлы с этой информацией.

      Ответить
  2. всё равно не понимаю, вот в паскалевских файлах находится код, который нужно превратить в бинарники и потом слинковать в один exe файл. Или в последних версиях дельфи уже нет pas файлов, а только xml

    Ответить
    • Frantic

       /  Октябрь 22, 2010

      Все *.pas и *.dpr остались на прежних местах. Просто в *.dproj файле в специальном xml-формате:

      1. Импортируются «правила сборки» с файлов CodeGear.*.Targets
      2. Указывается имя *.dpr файла

      MSBuild согласно правилам сборки запускает dcc32.exe (компилятор) и передает ему кучу параметров, включая имя проекта.

      Следите за обновлениями, вскоре будет топик на тему создания собственных файлов сборки для MSB.

      Ответить
  3. >>MSBuild согласно правилам сборки запускает dcc32.exe

    АААА, ну надо было сразу так и написать.
    Только вопрос: а нафиг оно надо так извращаться?

    Ответить
  1. Своя подсветка синтаксиса в IDE Delphi. Пример — DelphiFeeds.ru 2.0
  2. Своя подсветка синтаксиса в IDE Delphi. Пример | DelphiFeeds.ru 2.0

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: