cro*_*bar 7 automake autoconf autotools
我正在开发一个需要子项目的项目,该子项目有自己的makefile和configure.ac.子项目是一个程序,用于为主项目生成源文件.可以选择禁用此项目的构建,并尝试使用已安装的版本.
在任何一种情况下,我都会创建一个变量,该变量在我的Makefile.am中使用,包含程序的路径.
我的问题是,当使用项目的本地版本时,如何在Makefile.am中获取其位置?
我试过了
FOOPLACE=${abs_top_builddir}/bar/foo
Run Code Online (Sandbox Code Playgroud)
但这总是FOOPLACE只包含/bar/foo.即使在原则上,我也不确定这是否是正确的方法.
我只是做了一些简单的测试configure.ac.
$abs_top_builddir除非通过替换(即AC_CONFIG_FILES),否则我无法获得合理的价值.根据预设输出变量(autoconf),它们至少应该在config.status(即AC_CONFIG_COMMANDS)期间可用.他们不是.
潜入config.status,我发现@abs_top_builddir@被设置为值$ac_abs_top_builddir.这看起来很奇怪,我认为这可能是一个错误.我已将它发送到bug-autoconf以查看他们的想法.
故事的道德:它应该在任何替代完成的地方工作.你可以在$ac_abs_top_builddir内部使用config.status,但我不会依赖它.
这是我用过的测试:
configure.ac:
AC_PREREQ([2.67])
AC_INIT([], [0], [foo@example.com])
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
Run Code Online (Sandbox Code Playgroud)
test.in:
#!/bin/sh
# -*- sh -*-
# @configure_input@
echo "test: @abs_top_builddir@"
echo "test+ac: @ac_abs_top_builddir@"
Run Code Online (Sandbox Code Playgroud)
运行它autoconf && ./configure && ./test.
| 归档时间: |
|
| 查看次数: |
5138 次 |
| 最近记录: |