如何在configure.ac中处理多个版本的Automake

时间:2013-08-01 04:55:08

标签: build configure autotools automake

我希望根据Automake版本,在我AM_INIT_AUTOMAKE的{​​{1}}调用中有选择地省略某些标记。有没有办法做到这一点?

我正在处理的具体问题是Automake 1.12引入了一些我想要禁用的与可移植性相关的警告(configure.ac-Wextra-portability)(因为我使用-Wportability-Wall所以我不能忽视不相关的警告):

-Werror

这适用于Automake 1.12,但早期版本的Automake错误输出,因为他们不知道这些标志。如果我们使用Automake> = 1.12?

运行,是否有办法只包含这些标志?

我尝试使用AM_INIT_AUTOMAKE([-Wall -Werror -Wno-extra-portability -Wno-portability gnu foreign]) 但是没有用(加上我认为使用它甚至没有意义,因为它检查了Autoconf版本,而不是Automake版本......)

Here是类似问题的解决方案,涉及在m4_version_compare中修补configure.ac,我希望避免...

1 个答案:

答案 0 :(得分:2)

简短的回答是否定的,你不能在automake中干净利落地做到这一点。如果你想要这样的东西,你必须在引导脚本(configure.ac)中修补autogen.sh

更简单,只需要automake 1.12。

问题是您要比较的(与configure写为am__api_version)的automake版本号是M4sugar层中提供的。没有那些信息使得很难修复过去版本的automake。

编辑:在没有使用configure.ac修补autogen.sh的情况下,我想到了一种不同的方式来做同样的事情,但最终的结果是一样的。 make dist tarball仍然会在"基于构建tarball的任何人的automake版本的automake选项版本。但实际上这与仅设置带有选项的automake版本没有什么不同。