如何解决autoconf AS_IF 似乎评估了两个分支
我正在为 configure.ac
中的 AS_IF 宏苦苦挣扎,任何帮助都得到了帮助。
这个问题类似于autoconf-as-if-doesnt-execute-correct-branch,但那里的解决方案不适用于我的问题。
看起来,AS_IF 的两个分支中的 m4 宏都被评估了,即使它们不应该(至少,我不希望它们)。 可能只是我误解了 AS_IF 应该如何工作。
我的 configure.ac
dnl Define IFTEST_YES if the first argument is provided
AC_DEFUN([IFTEST],[
AC_MSG_NOTICE([iftest ($1)])
m4_ifval([$1],[m4_define([IFTEST_YES],[yes])])
])
dnl Either call IFTEST with argument or without,depending on condition
AS_IF([test "x" = y],[IFTEST([yes])],[IFTEST([])])
dnl Check whether IFTEST_YES is set
m4_ifset([IFTEST_YES],AC_MSG_NOTICE([is set]),AC_MSG_NOTICE([is not set]))
configure: iftest ()
configure: is not set
但是,我得到了输出
configure: iftest ()
configure: is set
注意,如果我只执行
IFTEST([])
在没有 AS_IF
的情况下,我得到了预期的输出。
请向我解释,这里发生了什么。 加分,如果你能告诉我如何实现我想要的(IFTEST 函数内 IFTEST_YES 变量的条件设置)。
非常感谢您。
在你问之前,为什么我做这个构造,为什么我在这里使用 m4_ifval
和 m4_ifset
:在我的用例中,IFTEST 函数和 m4_ifval
/m4_ifset
来了来自第三方库。
根据我的库中的设置,我想使用或不使用参数调用这个第三方函数(以切换 m4 定义)。
编辑:我在 Ubuntu 18.04.5 LTS 上使用 GNU automake 1.15.1 版。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。