Алексей Махоткин

домашняя страница

Automake

Go to the first, previous, next, last section, table of contents.


Единообразная схема наименования

Макросы Automake (с этого места мы будем ссылаться на них как на переменные) в общем следуют Единообразной Схеме Именования, которая позволяет легко понять, как собираются программы (и другие результирующие объекты), и как они устанавливаются. Эта схема также поддерживает определение того, что должно быть собрано во время выполнения configure.

Во время выполнения make, некоторые переменные используются для определения того, что должно быть собрано. Эти переменные называются основными переменными. Например, основная переменная PROGRAMS содержит список программ, которые должны быть скомпилированы и собраны.

Различные наборы переменных используются для принятия решения о том, куда должны быть установлены собранные объекты. Эти переменные называются подобно основным переменным, но имеют префикс, указывающий, какой из стандартных каталогов должен быть использован в качестве каталогаx для установки. Имена стандартных каталогов определены в стандартах GNU (see section `Directory Variables’ in The GNU Coding Standards). Automake расширяет это список переменными pkglibdir, pkgincludedir и pkgdatadir, которые имеют те же значения, что и не-`pkg’ версии, но с прибавленным к ним суффиксом `@PACKAGE@’. Например, pkglibdir определена как $(datadir)/@PACKAGE@.

Для каждой из основных переменных также существует дополнительная переменная, имя которой образовано добавлением префикса `EXTRA_’ к имени основной переменной. Эта переменная используется для перечисления объектов, которые могут быть собраны, а могут и не собраны в зависимости от принятого configure решения. Для того, чтобы создать файл `Makefile.in’, работающий в любой ситуации, Automake должен сразу узнать полный список объектов, которые вообще могут быть собраны. Исходя из этого, переменные с префиксом `EXTRA_’ обязательны.

Например, пакет cpio во время конфигурации принимает решение о том, какие программы необходимо скомпилировать. Некоторые программы устанавливаются в bindir, а некоторые – в sbindir:

EXTRA_PROGRAMS = mt rmt
bin_PROGRAMS = cpio pax
sbin_PROGRAMS = @PROGRAMS@

Определение основной переменной без префикса (например, PROGRAMS) является ошибкой.

Заметьте, что общий суффикс `dir’ опускается при создании имен переменных; таким образом, имя переменной записывается как `bin_PROGRAMS’, а не `bindir_PROGRAMS’.

Нельзя устанавливать любые типы объектов в любые каталоги. Automake будет расценивать такие попытки как ошибку. Automake также будет диагностировать очевидные ошибки в именах каталогов.

Иногда стандартных каталогов— даже с расширениями Automake— недостаточно. В частности, иногда полезно для ясности устанавливать объекты в подкаталог какого-то предопределенного каталога. Здесь Automake также позволяет вам расширить список возможных каталогов для установки. Заданный префикс (например, `zar’) является разрешенным, если определена переменная, имеющая такое же имя, но с суффиксом `dir’ (например, zardir).

Например, пока поддержка HTML не станет частью Automake, вы можете использовать такой фрагмент кода для установки документации в формате HTML:

htmldir = $(prefix)/html
html_DATA = automake.html

Специальный префикс `noinst’ показывает, что указанные объекты вообще не должны быть установлены.

Специальный префикс `check’ показывает, что указанные объекты не должны быть скомпилированы до тех пор, пока не будет запущена команда make check.

Вот список возможных основных имен: `PROGRAMS’, `LIBRARIES’, `LISP’, `SCRIPTS’, `DATA’, `HEADERS’, `MANS’ и `TEXINFOS’.


Go to the first, previous, next, last section, table of contents.

Comments