В неплоских пакетах в файле `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.