2014-02-25 51 views
1

我正在寫安裝的庫自定義檢查中的autoconf:如何在Autoconf中引用項目的絕對目錄(以便攜方式調用自定義腳本)?

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

其中實際執行檢查我的Python腳本駐留在項目的autotools/子目錄。

然而,這是不可移植的,例如make dist-check失敗,因爲那時的autoconf工具從不同的目錄中調用。我如何可以引用我的Python腳本的絕對路徑,以便它可以正確調用,而不管當前目錄是什麼?

回答

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

由於一些奇怪的原因,這些變量沒有在我的configure.ac中設置。例如,如果我嘗試'AC_MSG_NOTICE(PATH:$ ac_abs_top_srcdir)'或'AC_MSG_NOTICE(PATH:$ ac_top_srcdir)',則不會打印任何內容。 –

0

您可以使用$srcdir

這不一定是絕對路徑,但它是從構建樹頂端到源代碼樹的頂部點的路徑。

相關問題