所以我運氣不好,想象一下。我很感興趣,所以試着想出一個解決方案。我以爲這可能是一種可能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
。