是否有可能在autotools项目目录中有一个不相关的autotools项目?

时间:2011-10-04 06:50:59

标签: autotools subdirectory

我有两个autotools项目可以自行运行:

p1不构建任何库也不使用C ++,并且意图由用户编译。所以我这里没有libtoolize也没有LT_INIT。

p2创建了一个只在开发中使用的小型C ++库,这里我有LT_INIT并调用libtoolize。

但是当我将p2目录放在p1中时,在p2目录中运行automake会发现它位于autotools项目的子目录中,我收到错误

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

我尝试添加

AC_CONFIG_AUX_DIR([.])

到p2的configure.ac,但是configure中的ac_aux_dir变量为空,我收到错误

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

(configure中的行尝试运行$ax_aux_dir/config.sub

是否有一种干净的方法可以在autotools项目中使用不相关的autotools项目,或者我应该放弃?

2 个答案:

答案 0 :(得分: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之后。

无论如何,这有效:)

答案 1 :(得分:2)

在p1的configure.ac中,您可以写:

AC_CONFIG_SUBDIRS(p2)

AC_CONFIG_SUBDIRS的调用将导致p2被视为p1的子项目,具有自己的configure.ac等,所有内容都“自动工作”(希望如此)。还有complete small example in the autoconf manual