我从Autoconf Archive下载了一个宏,我想使用它。我需要在configure.ac文件中放置什么才能使用此宏?
答案 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文件?