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.