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

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

Autoconf

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


Создание выходных файлов

@anchor{Output}

Каждый скрипт configure, созданный Autoconf, должен заканчиваться вызовом макроса AC_OUTPUT. Этот макрос создает файлы `Makefile’ и, может быть, дополнительные файлы, которые являются результатом конфигурации. Еще одним обязательным макросом является AC_INIT (see section Нахождение ввода configure).

Macro: AC_OUTPUT ([file… [, extra-cmds [, init-cmds]]])
Создает выходные файлы. Вызовите этот макрос один раз в конце файла `configure.in’. Аргумент file… является списком выходных файлов через пробел; этот список может быть пустым. Этот макрос создает каждый из файлов `file, копируя входной файл (который по умолчанию называется `file.in’) и подставляя значения выходных переменных. Для более детального описания использования выходных переменных See section Подстановки в файлах Makefile. Для детального описания того, как создавать такие переменные See section Установка выходных переменных. Этот макрос создает каталог, в котором находится файл, если этот каталог не существует (но не создает родительские каталоги для этого каталога). Обычно таким образом создаются файлы `Makefile’, но можно указать также и другие файлы, такие как `.gdbinit’.

Если вызывались макросы AC_CONFIG_HEADER, AC_LINK_FILES или AC_CONFIG_SUBDIRS, то этот макрос также создает файлы, указанные в аргументах этих макросов.

Типичный вызов AC_OUTPUT выглядит примерно так:

AC_OUTPUT(Makefile src/Makefile man/Makefile X/Imakefile)

Вы можете переопределить имена входных файлов, добавив к file список входных файлов, который разделен двоеточием. Например:

AC_OUTPUT(Makefile:templates/top.mk lib/Makefile:templates/lib.mk)
AC_OUTPUT(Makefile:templates/vars.mk:Makefile.in:templates/rules.mk)

Это позволит вам сохранить имена файлов в формате MS-DOS, или для добавления стандартных кусков кода кода в начало или конец файла.

В параметре extra-cmds можно указать команды, которые будут вставлены в файл `config.status’ и сработают после того, как было сделано все остальное. В параметре init-cmds можно указать команды, которые будут вставлены непосредственно перед extra-cmds, причем configure выполнит в них подстановку переменных, команды и обратных слэшей. Аргумент init-cmds можно использовать для передачи переменных из configure в extra-cmds. Если был вызван макрос AC_OUTPUT_COMMANDS, то команды, переданные ему в качестве аргумента, выполняются прямо перед командами, переданными макросу AC_OUTPUT.

Macro: AC_OUTPUT_COMMANDS (extra-cmds [, init-cmds])
Задает дополнительные команды командного процессора, которые выполняются в конце `config.status’, а также команды для инициализации переменных в configure. Этот макрос можно вызывать несколько раз. Вот нереальный пример:
fubar=27
AC_OUTPUT_COMMANDS([echo this is extra $fubar, and so on.], fubar=$fubar)
AC_OUTPUT_COMMANDS([echo this is another, extra, bit], [echo init bit])

Если вам нужно запустить make в подкаталогах, то это следует делать с помощью переменной MAKE. Большинство версий программы make устанавливают значение переменной MAKE равным имени программы make с дополнительно заданными ключами. (Но многие версии не включаются сюда значения переменных, заданных в командной строке, поэтому они не передаются автоматически). Некоторые старые версии команды make не устанавливают эту переменную. Следующий макрос позволяет вам использовать переменную MAKE даже таких старых версий.

Macro: AC_PROG_MAKE_SET
Если make определяет переменную MAKE, то переменная SET_MAKE получает пустое значение. Иначе, определяется переменная SET_MAKE со значением `MAKE=make’. Для переменной SET_MAKE вызывается макрос AC_SUBST.

Для использования данного макроса поместите следующую строку в каждый из файлов `Makefile.in’, в котором производится запуск MAKE для подкаталогов:

@SET_MAKE@


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

Comments