我只是用一个简单的configure.ac
做了一些测试。
除非通过替换(即AC_CONFIG_FILES
),否则我无法获得$abs_top_builddir
的合理值。根据Preset Output Variables(autoconf),它们应该至少在config.status
期间可用(即,AC_CONFIG_COMMANDS
)。他们不是。
潜入config.status
,我发现@[email protected]
设置为$ac_abs_top_builddir
的值。这看起来很奇怪,我认为这可能是一个错误。 I have sent it to bug-autoconf看看他们在想什么。
道德故事:它应该在任何地方进行替代工作。您可以在config.status
内使用$ac_abs_top_builddir
,但我不会依赖它。
这里是我使用的测试:
configure.ac:
AC_PREREQ([2.67])
AC_INIT([], [0], [[email protected]])
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 -*-
# @[email protected]
echo "test: @[email protected]"
echo "test+ac: @[email protected]"
与autoconf && ./configure && ./test
运行它。
这不应该是'Makefile.am'文件中的$(abs_top_builddir)吗? – 2013-02-23 18:26:27
@BrettHale,我_believe_我不能在Makefile中这样做,就好像我正在使用已安装的程序版本,而不是在我的源代码目录中构建的版本,那么我需要使用此路径。有没有解决的办法?如果有一种方法可以在Makefile中修改我的'FOOPLACE'变量,我可以将它放在Makefile中的条件中,但这似乎不起作用。 – crobar 2013-02-23 19:46:13
@BrettHale:在'Makefile.am'中你可以实际使用,但'$()'表单是常规的。 – 2013-02-23 20:44:58