Skip to content

Want. Описание с сайта delphiplus.org

Alexey Shumkin edited this page Jun 21, 2019 · 1 revision

Текст взят c сайта delphiplus.org

Автоматизированная сборка проектов на Delphi с помощью WANT

© 2006 [email protected]

WANT – Open Source система для автоматизированной сборки, тестирования и упаковки проектов, написанных на Borland Delphi (замена make). Система WANT сама написана на Delphi и является аналогом Jakarta Ant для Java.

WANT позволяет выполнять следующие задачи:

  • сборка проекта
  • создание/копирование/удаление каталогов и файлов
  • архивация файлов
  • операции с CVS
  • unit-тестирование
  • операции с ini-файлами
  • запуск приложений
Описание процесса сборки хранится в файле want.xml.

Проект состоит из задач (targets), каждая из которых имеет свое имя и может зависеть от других задач, в таком случае сначала выполняются задачи, необходимые для ее завершения.

Задачи запускаются на исполнение из командной строки:

    want.exe <имя_задачи>

Рассмотрим пример использования WANT.

Создайте папку, в ней должны располагаться файлы want.exe и want.xml, проект Delphi с именем Test положите в папку source.

Что же содержит файл описания процесса сборки - want.xml?

Первый тэг – описание проекта и его свойств, корневой папки проекта (basedir) и задачи по умолчанию (default).

   <project name="test"
      basedir="."
      default="help">

описываем свойство "дата сборки проекта"

   <tstamp>
     <format property="date.build" pattern="yyyy_mm_dd" />
   </tstamp>

Перечисляем необходимые свойства. Все свойства задаются в формате имя (name) и значение (value). Можно использовать значения свойств, определенных выше, для это существует формат записи ${имя_свойства}

    <property name="src" value="${basedir}/source" />
    <property name="tmp" value="${basedir}/tmp" />
    <property name="dist.dir" value="${basedir}/dist" />
    <property name="dist.name" value="${dist.dir}/test_${date.build}.zip" />
    <property name="dist.src.name" value="${dist.dir}/test_src_${date.build}.zip" />

Описываем задачу. Внутри перечисляем, что нужно выполнить. Здесь осуществляется только вывод текста на экран.

    <target name="help">
       <echo message="this builds test" />
    </target>

Еще одна задача – создание каталогов (mkdir), ее параметр – имя создаваемого каталога (dir).

    <target name="prepare">
      <mkdir dir="${dist.dir}" />
      <mkdir dir="${tmp}" /> 
    </target> 

Задача компиляции проекта (compile) зависит (depends) от задачи prepare. Порядок исполнения – сначала prepare, потом compile. Задача компиляции включает в себя два этапа: dcc (консольный компилятор) и exec (запуск приложения).

У dcc следующие параметры:

  • Basedir – каталог, относительно которого будет осуществляться компиляция
  • Source – имя проекта Delphi
  • dcuoutput – каталог для dcu файлов
  • warnings – отображение предупреждений компилятора
Параметры exec:
  • Basedir – каталог в котором будет запущена программа
  • Executable – имя программы
  • Arg – аргументы
    <target name="compile" depends="prepare">
      <dcc basedir="${src}" source="test.dpr">
        <dcuoutput path="${tmp}" />
        <warnings value="True" />
      </dcc>
      <exec basedir="${src}" defaultfilters="true" executable="upx.exe">
        <arg value="--best" />
        <arg value="-q" />
        <arg value="test.exe" />
      </exec>
    </target>

Задачи формирования архивов с исходниками проекта и скомпилированного приложения:

  • Delete – удаление файлов
  • Zip – создание архива. Файлы в него можно добавлять (include) и игнорировать (exclude)
  <target name="dist_src" depends="prepare">
     <delete file="${dist.src.name}" />
     <zip zipfile="${dist.src.name}">
       <include name="${src}/*.pas" />
       <include name="${src}/*.dfm" />
       <include name="${src}/*.dpr" />
       <include name="${src}/*.dof" />
       <include name="${src}/*.res" />
       <include name="${src}/*.cfg" />
       <include name="${src}/*.todo" />
       <include name="want.xml" />
     </zip> 
    </target>
    <target name="all" depends="dist,dist_src"> 
    </target>
  </project>

Сохраняем файл и в консоли набираем want all. В результате должны выполнится все перечисленные задачи (см. рис).

Image:Want-work.png

В случае ошибки при выполнении любой из задач выводится сообщение об ошибке и сборка прекращается.

Image:Want-error.png

Остальные действия в WANT описываются аналогично.

На данный момент документации по WANT немного, поэтому лучшим вариантом будет изучение исходников с sourceforge, а также документации на Ant.

Copyright© 2006 [email protected]
Специально для Delphi Plus

Категория:Want

Clone this wiki locally