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 脚本后,我希望得到输出

 configure: iftest ()
 configure: is not set

但是,我得到了输出

 configure: iftest ()
 configure: is set

注意,如果我只执行

  IFTEST([])

在没有 AS_IF 的情况下,我得到了预期的输出。

请向我解释,这里发生了什么。 加分,如果你能告诉我如何实现我想要的(IFTEST 函数内 IFTEST_YES 变量的条件设置)。

非常感谢您。

在你问之前,为什么我做这个构造,为什么我在这里使用 m4_ifvalm4_ifset:在我的用例中,IFTEST 函数和 m4_ifval/m4_ifset 来了来自第三方库。 根据我的库中的设置,我想使用或不使用参数调用这个第三方函数(以切换 m4 定义)。

编辑:我在 Ubuntu 18.04.5 LTS 上使用 GNU automake 1.15.1 版。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...