Я хочу сгенерировать множество --enable-*/--disable-*
параметров, например:
COMPONENTS([a b c], [yes])
где второй аргумент — это значение по умолчанию для автоматической переменной enable_*
. Моей первой попыткой было написать AC_ARG_ENABLE(...)
внутри m4_foreach_w
, но пока я получаю только первый компонент, который появляется в выводе ./configure --help
.
Если я добавляю рукописные AC_ARG_ENABLE
s, они работают как обычно.
Несмотря на это, опции --enable-*/--disable-*
работают как надо, только отсутствует текст справки.
Вот полный код для воспроизведения проблемы:
AC_INIT([foo], 1.0)
AM_INIT_AUTOMAKE([foreign])
AC_DEFUN([COMPONENTS],
[
m4_foreach_w([component], [$1], [
AS_ECHO(["Processing [component] component with default enable=$2"])
AC_ARG_ENABLE([component],
[AS_HELP_STRING([--enable-[]component], [component] component)],
,
[enable_[]AS_TR_SH([component])=$2]
)
])
AC_ARG_ENABLE([x],
[AS_HELP_STRING([--enable-[]x], [component x])],
,
[enable_[]AS_TR_SH([x])=$2]
)
AC_ARG_ENABLE([y],
[AS_HELP_STRING([--enable-[]y], [component y])],
,
[enable_[]AS_TR_SH([y])=$2]
)
])
COMPONENTS([a b c], [yes])
for var in a b c x y; do
echo -n "\$enable_$var="
eval echo "\$enable_$var"
done
AC_CONFIG_FILES(Makefile)
AC_OUTPUT
И пустой Makefile.am
. Чтобы убедиться, что параметры работают:
$ ./configure --disable-a --disable-b --disable-d --disable-x
configure: WARNING: unrecognized options: --disable-d
...
Processing component a with default enable=yes
Processing component b with default enable=yes
Processing component c with default enable=yes
$enable_a=no
$enable_b=no
$enable_c=yes
$enable_x=no
$enable_y=yes