2016-04-13 27 views
1

いくつかのプロジェクトで共有されるカスタムautoconfマクロがあります。 AC_ARG_WITHマクロの一部をプロジェクトに依存させたいので、./configure -hのときには表示されません。たとえば:設定中の条件付きAS_ARG_WITH

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_ifAS_IFのようなものを試してみたが、それは動作しません。これを行う方法はありますか、または私はSOLですか?

ありがとうございます!

答えて

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 

言うまでもなくし、それは動作しませんでした。

$ ./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-extras--enable-foo./configure --helpに表示され、スイッチによって設定された変数は独立しており、このサンプル出力をチェックアウトスイッチと補完的な変数が所定の位置にあるが、条件付きブロックが尊重されます本当に--enable-fooの場合は--enable-extrasとなります。