我只是用一个简单的方法做了一些测试configure.ac
.
我无法获得合理的价值$abs_top_builddir
除非是通过替换(即AC_CONFIG_FILES
)。根据预设输出变量(autoconf) http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Preset-Output-Variables.html,它们至少应该在config.status
(i.e., AC_CONFIG_COMMANDS
)。他们不是。
潜入config.status
, 我找到@abs_top_builddir@
被设置为值$ac_abs_top_builddir
。这看起来很奇怪,我认为这可能是一个错误。我已经把它发送到 bug-autoconf https://lists.gnu.org/archive/html/bug-autoconf/2013-02/msg00008.html看看他们的想法。
这个故事的寓意是:它应该在任何进行替换的地方发挥作用。您也许可以使用$ac_abs_top_builddir
within config.status
,但我不会依赖它。
这是我使用的测试:
配置.ac:
AC_PREREQ([2.67])
AC_INIT([], [0], [[email protected] /cdn-cgi/l/email-protection])
AC_MSG_NOTICE([notice: ${abs_top_builddir}])
AC_MSG_NOTICE([notice+ac: ${abs_top_builddir}])
AC_CONFIG_COMMANDS_PRE([echo "pre+ac: ${ac_abs_top_builddir}"])
AC_CONFIG_COMMANDS_PRE([echo "pre: ${abs_top_builddir}"])
AC_CONFIG_COMMANDS_POST([echo "post+ac: ${ac_abs_top_builddir}"])
AC_CONFIG_COMMANDS_POST([echo "post: ${abs_top_builddir}"])
AC_CONFIG_COMMANDS([echo],
[echo "config.status+ac: ${ac_abs_top_builddir}"
echo "config.status: ${abs_top_builddir}"])
AC_CONFIG_FILES([test], [chmod +x test])
AC_OUTPUT
test.in:
#!/bin/sh
# -*- sh -*-
# @configure_input@
echo "test: @abs_top_builddir@"
echo "test+ac: @ac_abs_top_builddir@"
运行它autoconf && ./configure && ./test
.