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.