我有一些自定义autoconf宏,将由多个项目共享。我希望某些AC_ARG_WITH
宏取决于项目,因此它们在./configure -h
时不显示。例如:
if test $PKG_NAME = proj1; then
AC_ARG_WITH(foodir, AC_HELP_STRING([--with-foodir=DIR],
[where foo will come from]),
foodir=$withval,
foodir="")
fi
我尝试了m4_if
和AS_IF
之类的内容,但它不起作用。有没有办法做到这一点,或者我是SOL?
谢谢!
答案 0 :(得分:0)
所以运气不好,我想。我很感兴趣,所以尝试提出解决方案。我认为这可能是configure.ac
:
AC_INIT([Autohell], [0.0.1])
AC_PREREQ(2.13)
AC_ARG_ENABLE([extras],[AC_HELP_STRING([--enable-extras],[Enable extra options])],
[
AS_CASE([$enable_extras],
[yes],
[
AC_ARG_ENABLE([foo],[AC_HELP_STRING([--enable-foo],[Enable the Foo])],
[
enable_foo=$enableval
echo "Foo Enabled"
],
[
enable_foo="no"
echo "Foo Disabled"
])
],
[
echo "Extras Disabled"
])
],enable_extras="no")
AM_CONDITIONAL([FOO],[test "$enable_foo" = "yes"])
cat << EOF
Extras: ${enable_extras}
Foo: ${enable_foo}
EOF
毋庸置疑,它没有用。 --enable-extras
和--enable-foo
都显示在./configure --help
中,并且开关设置的变量是独立的,请查看此示例输出:
$ ./configure
Extras: no
Foo:
$ ./configure --enable-extras
Foo Disabled
Extras: yes
Foo: no
$ ./configure --enable-extras --enable-foo
Foo Enabled
Extras: yes
Foo: yes
$ ./configure --disable-extras --enable-foo
Extras Disabled...
Extras: no
Foo: yes
输出非常有趣:尽管开关和互补变量已经到位,但条件块仍然受到尊重,所以当我们--enable-foo
时我们才能真正--enable-extras
。