gpt4 book ai didi

autotools - 如何获取autoconf configure.ac中顶级构建目录的绝对路径?

转载 作者:行者123 更新时间:2023-12-04 07:55:49 31 4
gpt4 key购买 nike

我正在一个需要一个子项目的项目中,该子项目具有自己的makefile和configure.ac。子项目是一个程序,用于为主项目生成源文件。有一个选项可以禁用此项目的构建,并尝试使用已安装的版本。

无论哪种情况,我都会在Makefile.am中使用一个包含程序路径的变量。

我的问题是,当使用项目的本地版本时,如何获取其位置以在Makefile.am中使用?

我试过了

FOOPLACE=${abs_top_builddir}/bar/foo

但这总是使 FOOPLACE仅包含 /bar/foo。即使从原则上来说,我也不确定这是否是正确的方法。

最佳答案

我只是用一个简单的configure.ac做了一些测试。

除非通过替换(即$abs_top_builddir),否则我无法获得AC_CONFIG_FILES的合理值。根据Preset Output Variables(autoconf),它们至少应在config.status(即AC_CONFIG_COMMANDS)期间可用。他们不是。

深入研究config.status,我发现@abs_top_builddir@设置为$ac_abs_top_builddir的值。这似乎很奇怪,我认为这可能是一个错误。 I have sent it to 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

test.in:
#!/bin/sh
# -*- sh -*-
# @configure_input@
echo "test: @abs_top_builddir@"
echo "test+ac: @ac_abs_top_builddir@"

使用 autoconf && ./configure && ./test运行它。

关于autotools - 如何获取autoconf configure.ac中顶级构建目录的绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041754/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com