2016-06-15 8 views
0

を動作していないm4_bmatch私のconfigure.acでいくつかのコードです:のAutoconfは、ここで変数

THIS="h5cc" 
AC_MSG_WARN([$THIS]) 
AC_MSG_WARN(m4_bmatch([h5pcc], 
     [h5pcc], [parallel], 
     [h5cc], [serial], 
     [neither] 
     )) 
AC_MSG_ERROR(m4_bmatch([$THIS], 
     [h5pcc], [parallel], 
     [h5cc], [serial], 
     [neither] 
     )) 

私はこれになりautoconf、その後configure、:

configure: WARNING: h5cc 
configure: WARNING: parallel 
configure: error: neither 

を私の知る限り、それは起こるはずがありません、そうですか?私は何が欠けていますか?

+0

m4_bmatchのドキュメント:https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Conditional-constructs.html – Joel

答えて

2

あなたの構成内でM4コードを混在させていますが、m4は展開前(すなわちautoconfを実行するとき)にのみ実行されます。THIS=h5ccはシェルで実行されるシェル構成です(./configureを実行するとき)。

だから、m4_bmatchは実際にはどちらでもない$THISという文字列です。

短いバージョンでは、設定時に変更したいものに対してm4_*機能を使用しないでください。

+0

ありがとうございました!!!どのように私はそれを働かせることができるアイデアを持っていますか? – Joel

+0

あなたが探しているのは、代わりに 'AS_CASE'です(これはM4shです)。 https://autotools.io/autoconf/m4sh.htmlを参照してください(完全な開示、私はそれを書いています)。 –

+0

それです!私はちょうどあなたの答えを更新しようとしていた。私はそれを働かせた。 – Joel