Я хочу создать много вариантов --enable-*/--disable-*
что-то вроде:AC_ARG_ENABLE в цикле m4_foreach_w: никакой помощи строки
COMPONENTS([a b c], [yes])
где второй аргумент является значением по умолчанию автоматической enable_*
переменной. Моя первая попытка состояла в том, чтобы написать AC_ARG_ENABLE(...)
в пределах m4_foreach_w
, но до сих пор я получаю только первый компонент, который появляется на выходе ./configure --help
.
Если я добавлю рукописные AC_ARG_ENABLE
, они будут работать как обычно.
Независимо от того, что параметры --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