2013-03-21 48 views
2

如何使用變量的消息內configure.ac如何使用變量在autoconf的字符串:configure.ac

if test "$foo" = "yes"; then 
    AC_MSG_ERROR([this string is being used in WARN as well as ERROR]) 
else 
    AC_MSG_WARN([this string is being used in WARN as well as ERROR]) 
fi 

這將是有意義的定義字符串「這個字符串是被用來作爲WARN以及ERROR」在變量,然後使用該變量在兩個AC_MSG_WARNAC_MSG_ERROR。什麼是最好的方式來做到這一點?

除此之外,沒有M4具有任何宏觀,可代替這整個的if else採取字符串和$ foo的作爲參數?

回答

4

這應該工作:

msg="this string is being used in WARN as well as ERROR" 
if test "$foo" = "yes"; then 
    AC_MSG_ERROR([$msg]) 
else 
    AC_MSG_WARN([$msg]) 
fi 

除此之外,確實M4具有可代替這整個的if else採取字符串和$ foo的作爲參數任何宏?

如果你寫一個,它會的。 :-)。 if-else不在m4中,它在m4的輸出中,即configure shell腳本。喜歡的東西:

AC_DEFUN([AX_TEST_FOO], [ 
    pushdef([MSG],$1) 
    pushdef([FOO],$2) 
    AS_IF([test $FOO = yes], [AC_MSG_ERROR([$MSG])], [AC_MSG_WARN([$MSG])]) 
    popdef([FOO]) 
    popdef([MSG]) 
]) 

叫這樣的:

AX_TEST_FOO(["this string is being used in WARN as well as ERROR"], [$foo]) 

應該接近。我沒有嘗試過。

+0

謝謝。這似乎是解決方案,但似乎在某處存在一些微不足道的錯誤。對我而言,即使第二個參數爲「是」,AC_MSG_WARN也會始終執行。 – useratuniv 2013-03-21 15:09:22

+0

測試「$ FOO」 =「是」,似乎會失敗,即使回聲$ FOO的結果是肯定的。 – useratuniv 2013-03-21 15:46:56

+0

好吧,如果我刪除引號,它工作正常。 – useratuniv 2013-03-21 15:48:19

相關問題