2011-10-04 70 views
2

我有自己的正常工作2個自動工具項目:是否有可能在autotools項目目錄中有一個不相關的autotools項目?

P1沒有建立任何庫也不能使用C++,並意味着由用戶進行編譯。所以我不在這裏進行libtoolize和LT_INIT。

p2創建一個僅用於開發的小型C++庫,在這裏我有LT_INIT並調用libtoolize。

但是當我把P2目錄內P1,運行P2目錄內的automake會發現,它是在一個自動工具項目的子目錄,然後我得到的錯誤

configure.ac:31: required file `../ltmain.sh' not found 

我嘗試添加

AC_CONFIG_AUX_DIR([.]) 

到P2的configure.ac,但隨後在配置ac_aux_dir變量變空,而我得到的錯誤

configure: error: cannot run /bin/sh /config.sub 

(在配置行試圖運行$ax_aux_dir/config.sub

有沒有乾淨的方式有一個自動工具項目中一個不相關的自動工具項目,或者我應該乾脆放棄?

回答

3

我問了兩分鐘後問,有多典型。顯然,configure.ac必須有:

AC_INIT(…) 
AC_CONFIG_AUX_DIR([.]) 
AM_INIT_AUTOMAKE(…) 

,而不是:

AC_CONFIG_AUX_DIR([.]) 
AC_INIT(…) 
AM_INIT_AUTOMAKE(…) 

像我有(它使假如AUX_DIRAM_INIT_AUTOMAKE後,這使我相信它必須是一個錯誤信息也在AC_INIT之後)。

不管怎麼說,這個工作:)

2

在P1的configure.ac你可以寫:

AC_CONFIG_SUBDIRS(p2) 

這次調用AC_CONFIG_SUBDIRS會導致P2被視爲P1的一個子項目,有自己的configure.ac等,一切「只是自動工作「(希望)。還有一個complete small example in the autoconf manual

+0

當我嘗試這一點,似乎運行autoreconf/P1中配置將嘗試配置P2(至少它說'配置在P2 \ n請:警告:沒有配置信息在p2'中)。我不想讓P1完全依賴P2。 – unhammer

+1

如果你想讓它們完全分開,我會把它們放在不同的目錄中。如果你想讓它們相關,但是可選的,我會使用'if test -d「$ srcdir/p2」;那麼'AC_CONFIG_SUBDIRS'的語法。 – Flexo

相關問題