Ich wünsche viele --enable-*/--disable-*
Optionen durch so etwas wie zu generieren:AC_ARG_ENABLE in einer m4_foreach_w Schleife: keine Hilfe Zeichenfolge
COMPONENTS([a b c], [yes])
wo das zweite Argument des Standardwert der automatischen enable_*
variabel ist. Mein erster Versuch war, eine AC_ARG_ENABLE(...)
innerhalb einer m4_foreach_w
zu schreiben, aber bis jetzt bekomme ich nur die erste Komponente, die im ./configure --help
Ausgang erscheint.
Wenn ich handgeschriebene AC_ARG_ENABLE
s hinzufüge, funktionieren sie wie üblich.
Unabhängig davon funktionieren die --enable-*/--disable-*
Optionen so, wie sie sollten, nur der Hilfetext fehlt.
Hier ist der vollständige Code, um das Problem zu reproduzieren:
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
Und eine leere Makefile.am
. Um zu überprüfen, dass die Optionen arbeiten:
$ ./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