2011-03-14 45 views

回答

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,你应该设置。

7

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

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文件中指定一个目录,看起来这将是一个非常常见的用例哦。)

+0

“如果你不使用libtoolize,目前看起来'AC_CONFIG_MACRO_DIR'没有用。”为什么?我还没有找到任何建议MACRO_DIR和libtoolize之间有关联的文档。 – 2016-10-22 23:23:26

+0

@underscore_d已经有一段时间了,所以我不太确定,但我认为这是通过实验发现的。 – Chris 2016-10-24 16:55:52

+1

运行libtoolize将在AC_CONFIG_MACRO_DIR指定的目录中创建符号链接,前提是您不要使用m4_include作为某些事情,因为libtoolize无法遵循这些包含(请参阅我的Q/A:http://unix.stackexchange.com/questions/ 340633 /实行-夹杂物的,另一个文件 - 到 - 一个流读取从 - 标准输入 – 2017-01-28 19:45:12

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  
2

是不是不够的,只是保存m4宏在特定的目录,然后运行autoreconf-I选项:

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

还是我误解你,你想把它永久整合,没有运行autoreconf的人担心下载m4文件?

相关问题