2011-10-04 36 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

相关问题