Использование сборщика проектов |
24.02.2009 Лагунов А.А. |
В составе IDE Lazarus идут дополнительные полезные утилиты. Одна из них — утилита командной строки, предназначенная для удобства компиляции и сборки проектов (программ, пакетов), разработанных с помощью Lazarus.
Она устанавливается автоматически при установке самой IDE (или собирается из исходников — если IDE собирают из исходных текстов). Находится обычно рядом с исполняемым файлом самой IDE и называется lazbuild в unix-подобных и lazbuild.exe в windows системах.
Формат вызова:
lazbuild [options] <project or package-filename>
Данная утилита предназначена для удобной сборки готовых проектов, написанных в Lazarus без запуска самой IDE. Возможность существования этой утилиты обеспечивается тем фактом, что в файле проекта (*.lpi) или пакета (*.lpk) находится информация о зависимостях от других библиотек, которые необходимы для сборки нашего проекта или пакета. Также в файлах проекта находится информация обо всех файлах, которые входят в проект и месте их нахождения.
Основываясь на этих данных, lazbuild правильно формирует строку запуска компилятора FreePascal (ppc386 или тот, что вы у себя используете), с передачей ему всех путей поиска библиотек (как пакетов по зависимостям, так и модулей самого проекта).
Фактически в большинстве случаев сборка проекта сводится к вызову lazbuild с передачей через командную строку ему полного пути и имени файла пакета.
Я сам постоянно использую эту утилиту при пересборке IDE для компиляции пакетов. Простой командный файл со списком пакетов, которые мне необходимо устанавливать в IDE (пример bash-скрипта из linux-а):
laz_dir=/usr/local/share/lazarus $laz_dir/lazbuild $laz_dir/components/uib/source/uiblaz.lpk $laz_dir/lazbuild $laz_dir/components/printers/printer4lazarus.lpk $laz_dir/lazbuild $laz_dir/components/printers/design/printers4lazide.lpk $laz_dir/lazbuild $laz_dir/components/rx/rx.lpk $laz_dir/lazbuild $laz_dir/components/rxnew/rxnew.lpk $laz_dir/lazbuild $laz_dir/components/lazreport/source/lazreport.lpk $laz_dir/lazbuild $laz_dir/components/FBDataSet/fbdemofpc.lpk $laz_dir/lazbuild $laz_dir/components/FBDataSet/dcl_fb_id_dataset.lpk #... и так далее перечисление пакетов #Скомпилим LazDE $laz_dir/lazbuild $laz_dir/doceditor/lazde.lpr #... заодно компилю необходимые утилиты, которые не собираются сами.
Таким образом, lazbuild полностью освобождает программиста от заботы по написанию make-файлов для сборки его программы.
Дополнительно поддерживаются параметры командной строки (копия вывода на консоль программы после запуска с ключом —help и комментариями, операционная система — Fedora Linux 10):
Параметр | Описание | Пояснение |
-B or --build-all | собрать все файлы проекта/пакета/IDE | принудительная компиляция всех модулей, которые входят в проект |
-r or --recursive | использовать флаг сборки (-B) также для зависимостей | принудительная компиляция всех модулей, которые входят в проект и всех используемых библиотек, для которых есть исходные тексты |
-d or --skip-dependencies | не собирать зависимости | при сборке проекта или пакета не перекомпилировать другие библиотеки по зависимостям |
-build-ide=<options> | собрать IDE с пакетами | |
-v or --version | показать версию и выйти | |
--primary-config-path=<path>or--pcp=<path> | первичный каталог настроек, где Lazarus хранит свои файлы настроек | по умолчанию - /home/$USER/.lazarus |
--secondary-config-path=<path>or--scp=<path> | вторичный каталог настроек, где Lazarus ищет шаблоны файлов настроек | по умолчанию - /etc/lazarus |
--operating-system=<operating-system>or--os=<operating-system> | переопределить операционную систему проекта, например, win32 linux | значение по умолчанию: linux |
--widgetset=<widgetset>or--ws=<widgetset> | переопределить библиотеку виджетов проекта, например, gtk gtk2 qt win32 carbon | значение по умолчанию: gtk2 |
--cpu=<cpu> | переопределить целевое семейство процессоров проекта, например, i386 x86_64 powerpc powerpc_64 и т.д. | значение по умолчанию: i386 |
--compiler=<ppcXXX> | переопределить компилятор по умолчанию, например, ppc386 ppcx64 ppcppc и т.д. | значение по умолчанию хранится в environmentoptions.xml |
--language= | переопределить язык (например, --language=de) | см. каталог languages, чтобы узнать возможные значения |