【发布时间】:2017-11-23 15:29:24
【问题描述】:
我有一个自动配置问题。在 ./configure 期间,我需要编译并运行一个小 C 程序,并将它的标准输出捕获并修剪成一个变量,然后确认该变量已成功设置。感觉这应该很简单,但我已经挣扎了几个小时。
我希望解析标准输出:
hello "world"
并将引用字符串的内容存储在变量GREETING中。反而 我的 sn-p 生成错误“无法检测问候语”。
这是我目前所拥有的:
AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[#include <stdio>]],
[[printf("hello \"world\"\n");]])
],
[AC_SUBST(GREETING,
[[`./conftest$EXEEXT | sed 's/.*"\(.*\)".*/\1/'`]])
]
)
if test -z "${GREETING}"; then
AC_MSG_ERROR([Cannot detect greeting])
fi
有人能指出正确的方向吗?
【问题讨论】:
-
您过度引用了许多宏参数,而低估了另一个。在任何情况下,至少出于测试目的,我建议添加代码以更直接地验证采用
AC_RUN_IF_ELSE的哪个分支。您可以为此使用AC_MSG_NOTICE,或AC_MSG_CHECKING/AC_MSG_RESULT对。
标签: autotools configure autoconf