如何在Autoconf中引用项目的绝对目录(以便携方式调用自定义脚本)?

时间:2014-02-25 12:55:30

标签: scripting portability autoconf

我正在为autoconf中的已安装库编写自定义检查:

AC_DEFUN([AC_GHC_PKG_CHECK],[
    ...
    GHC_PKG_RESULT=$($PYTHON autotools/check-ghc-version-range ....)
    ...
])

我实际执行检查的Python脚本位于项目的autotools/子目录中。

但是,这不可移植,例如make dist-check失败,因为从其他目录调用autoconf工具。如何引用我的Python脚本的绝对路径,以便无论当前目录是什么都能正确调用它?

2 个答案:

答案 0 :(得分:0)

在这种情况下,

ac_top_srcdirac_abs_top_srcdir应该有效:

AC_DEFUN([AC_GHC_PKG_CHECK],[
    ...
    GHC_PKG_RESULT=$($PYTHON $ac_top_srcdir/autotools/check-ghc-version-range ....)
    ...
])

编辑:我不认为这种方法会起作用 - 似乎$ac_top_srcdir直到稍后才会被评估(AC_OUTPUT?)。

我认为在这种情况下可能会运行类似于运行时C测试的操作:将配置测试扩展到临时文件(在这种情况下为conftest.py而不是conftest.c)和运行。不幸的是,还有(还)没有内置宏或者用于automake / autoconf的其他工具直接帮助完成这项任务。

幸运的是,似乎a clever person至少写了几种不同的方法。第一个是GNU pyconfigure,它似乎有facilities用于编写Python测试代码,如上所述。第二个更多的是他用于他的项目的ad hoc macro collection

答案 1 :(得分:0)

您可以使用$srcdir

它不一定是绝对路径,但它是从构建树顶部指向源树顶部的路径。