2016-04-13 9 views
1

Ich habe einige benutzerdefinierte Autoconf Makros, die von mehreren Projekten geteilt werden. Ich möchte einige der AC_ARG_WITH Makros von dem Projekt abhängen, so dass sie nicht angezeigt werden, wenn sie ./configure -h tun. Zum Beispiel:Bedingte AS_ARG_WITH in konfigurieren

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 

Ich habe Dinge versucht, wie m4_if und AS_IF, aber es funktioniert nicht. Gibt es eine Möglichkeit, das zu tun, oder bin ich SOL?

Danke!

Antwort

0

So viel Glück, würde ich mir vorstellen. Ich war interessiert, also habe ich versucht, eine Lösung zu finden. Ich dachte, dies könnte eine mögliche configure.ac gewesen sein:

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 

Unnötig zu sagen, es hat nicht funktioniert. Sowohl --enable-extras und --enable-foo erscheinen in ./configure --help und die Variablen durch die Schalter eingestellt sind unabhängig, lesen Sie in diesem Beispiel für die Ausgabe:

$ ./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 

Ausgabe ist recht interessant: Obwohl die Schalter und ergänzende Variablen vorhanden sind, die bedingte Blöcke eingehalten werden so können wir wirklich nur --enable-foo wenn wir auch --enable-extras.