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

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

Automake

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


Условные операторы

Automake поддерживает простейший вид условных операторов.

Перед использованием условного оператора вы должны определить его в файле configure.in с помощью макроса AM_CONDITIONAL (see section Макросы Autoconf, поставляемые с Automake). Макросу AM_CONDITIONAL передается два аргумента.

Первым аргументом для AM_CONDITIONAL является имя условного оператора. Это простая строка, начинающаяся с буквы и содержащая только буквы, цифры и знаки подчеркивания.

Вторым аргументом AM_CONDITIONAL является условие для командной оболочки, которое можно использовать в операторе if. Условие вычисляется во время работы configure.

Условные операторы обычно зависят от ключей, которые использует пользователь при запуске скрипта configure. Вот пример условного оператора, который возвращает истинное значение, если пользователь использовал ключ `–enable-debug’.

AC_ARG_ENABLE(debug,
[  –enable-debug    Turn on debugging],
[case “${enableval}” in
  yes) debug=true ;;
  no)  debug=false ;;
  *) AC_MSG_ERROR(bad value ${enableval} for –enable-debug) ;;
esac],[debug=false])
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)

Вот пример использования этого условного оператора в файле `Makefile.am’:

if DEBUG
DBG = debug
else
DBG =
endif
noinst_PROGRAMS = $(DBG)

Этот тривиальный пример также мог быть обработан с использованием макроса EXTRA_PROGRAMS (see section Построение программ).

В операторе if можно тестировать только одну переменную. Оператор else может быть опущен. Условные операторы могут быть вложены на любую глубину.

Заметьте, что условные операторы в Automake не похожи на условные операторы в GNU Make. Условные операторы Automake проверяются во время конфигурации, при выполнении скрипта `configure’, и воздействуют на преобразование файла `Makefile.in’ в файл `Makefile’. Они основываются на ключах, передаваемых скрипту `configure’ и на результатах, определяемых во время выполнения `configure’. Условные операторы GNU Make проверяются при выполнении make и основываются на переменных, передаваемых программе make, или определенных в `Makefile’.

Условные операторы Automake будут работать с любой программой make.


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

Comments