2

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

「この文字列はエラーと同様に警告でも使用されています」という文字列を変数で定義し、その変数をAC_MSG_WARNAC_MSG_ERRORの両方で使用することは理にかなっています。それを行う最善の方法は何ですか?

それに加えて、m4 には、if else を文字列と $foo を引数として取り、この全体を置き換えることができるマクロがありますか?

4

1 に答える 1

3

これはうまくいくはずです:

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 を引数として取り、この全体を置き換えることができるマクロがありますか?

1つ書けば、そうなります。:-)。configureif-else は m4 にはなく、シェル スクリプトである m4 の出力にあります。何かのようなもの:

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])

近いはずです。私はそれを試しませんでした。

于 2013-03-21T14:32:37.820 に答える