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

在变量中定义字符串“此字符串在 WARN 和 ERROR 中使用”然后在AC_MSG_WARNAC_MSG_ERROR中使用该变量是有意义的。最好的方法是什么?

除此之外,m4 是否有任何宏可以通过将字符串和 $foo 作为参数来替换整个 if else ?

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 是否有任何宏可以通过将字符串和 $foo 作为参数来替换整个 if else ?

如果你写一个,它会的。:-)。if-else 不在 m4 中,而是在configureshell 脚本 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 回答