如何在Autoconf中包含.m4文件?

时间:2011-03-14 12:54:09

标签: autoconf

我从Autoconf Archive下载了一个宏,我想使用它。我需要在configure.ac文件中放置什么才能使用此宏?

5 个答案:

答案 0 :(得分:32)

您可能希望将AC_CONFIG_MACRO_DIR添加到configure.ac到宏所在的目录:

AC_CONFIG_MACRO_DIR([path/to/macros])

您还需要在此文件中的某处调用宏。

并且在Makefile.am中您可能需要设置ACLOCAL_AMFLAGS(如果您使用的是automake):

ACLOCAL_AMFLAGS         = -I path/to/macros

然后调用autoreconf -fvi,您应该设置。

答案 1 :(得分:11)

我有同样的问题,找到答案比我想象的更难。看起来AC_CONFIG_MACRO_DIR就像我想要的那样,但是如果你没有使用libtoolize,那么AC_CONFIG_MACRO_DIR目前似乎毫无用处。

如果你正在使用automake,我认为上面的答案是正确的。

我没有使用automake,所以我找到的唯一方法是使用m4_include宏来分别吸入每个.m4文件。我在这里找到了这种方法:

http://www.flameeyes.eu/autotools-mythbuster/autoconf/macros.html

希望这会有所帮助。 (考虑到autoconf已经存在多长时间,我有点难以理解,没有内置的方法只能在.ac文件中指定一个目录。看起来它会是一个非常常见的用例。哦,好吧。)

答案 2 :(得分:7)

作为Idav1s解决方案的替代方案(绝对正确),您可以在aclocal找到它的位置安装宏(使用aclocal --print查看aclocal的位置寻找.m4个文件)。每种方法都有利有弊。如果您在.m4中安装$(aclocal --print)文件,则可以在所有项目中使用该宏,而无需执行任何其他操作。主要缺点是,每个在项目上工作的开发人员都必须在他们的盒子上安装宏,这需要每个开发人员对autotools有一个合理的理解。

答案 3 :(得分:4)

我也有这个问题,并且修复了它。我的环境是: CentOS 6.4,M4 1.4.17,autoconf 2.69,libtool 2.4,automake 1.14

以下是我使用的步骤。

add m4 as AC_CONFIG_MACRO_DIR to your configure.ac
rm aclocal.m4  if it exists
mkdir m4       if it does not exist
# copy some dummy files into the folder 
# or some versions of autoconf  won't work   
autoreconf -i --install    

答案 4 :(得分:3)

仅仅将m4宏保存在某个目录中并使用autoreconf选项运行-I是不够的:

autoreconf -i -I/path/to/your/m4/file

或者我是否误解了您,并且您是否希望永久地将其集成,而{1}}的人无需担心下载m4文件?