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

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

Automake

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


`Makefile.am’ верхнего уровня

В неплоских пакетах в файле `Makefile.am’ верхнего уровня надо указать Automake, в каких подкаталогах будет производится сборка. Это выполняется с помощью переменной SUBDIRS.

Макрос SUBDIRS содержит список подкаталогов, в которых могут производиться различные виды сборки. Многие цели (например, all) в сгенерированном файле `Makefile’ будут выполняться как в текущем каталоге, так и во всех указанных подкаталогах. Заметьте, что подкаталоги, перечисленные в SUBDIRS, не обязаны содержать файл `Makefile.am’, а только лишь `Makefile’ (после выполнения конфигурации). Это позволяет использовать библиотеки из пакетов, которые не используют Automake (например, gettext). Каталоги, упомянутые в SUBDIRS, должны быть прямыми потомками текущего каталога. Например, вы не можете поместить каталог `src/subdir’ в переменную SUBDIRS.

В глубоких пакетах `Makefile.am’ верхнего уровня часто очень короток. Например, вот `Makefile.am’ из дистрибутива GNU Hello:

EXTRA_DIST = BUGS ChangeLog.O README-alpha
SUBDIRS = doc intl po src tests

Можно переопределить переменную SUBDIRS если, как в случае GNU Inetutils, вы хотите собрать только некоторое подмножество пакета. Для этого включите в ваш файл `Makefile.am’ следующие строки:

SUBDIRS = @SUBDIRS@

Затем в вашем файле `configure.in’ вы можете указать:

SUBDIRS = “src doc lib po”
AC_SUBST(SUBDIRS)

В результате этого Automake сможет при построении пакета заставить его принимать список каталогов, но точное содержимое этого списка станет известно только после запуска configure.

Хотя макрос SUBDIRS может содержать подстановки (например `@DIRS@’); сам Automake в действительности не проверяет содержимое этой переменной.

Если определена переменная SUBDIRS, то ваш файл `configure.in’ должен включать макрос AC_PROG_MAKE_SET.

Использование SUBDIRS не ограничено только `Makefile.am’ верхнего уровня. Automake может использоваться для создания пакетов любой глубины.

По умолчанию Automake создает файлы `Makefile’, которые работают, выполняя сначала make в подкаталогах (постфиксный метод). Однако, можно изменить это поведение, поместив `.’ в переменную SUBDIRS. Например, поместив `.’ в начало списка, вы заставите выполнять make сначала в текущем каталоге, а затем уже в подкаталогах (префиксный метод).


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

Comments