autotools:为什么在 configure.ac 中使用 AX_... 而不是 AC_...?

autotools: why AX_... rather than AC_... in configure.ac?

我今天遇到了一组 autoconf 宏:https://www.gnu.org/software/autoconf-archive/The-Macros.html#The-Macros。所有前缀为 ax_ ,例如ax_ac_append_to_file.m4,通过包含行 AX_ABSOLUTE_HEADER()configure.ac 中激活。

以前只见过AC_开头的宏。

所以切换到 AX_ 是一个相对较新的约定,一种避免名称空间冲突的方法,还是其他什么?

宏是命名空间的。 AC_指Autoconf中的宏,AM_是Automake,LT_是Libtool等

过去,其他提供宏的程序在 Autoconf 的命名空间中肆虐是很常见的,这就是为什么您可能已经看到一些 AX_ 宏在野外变体 AC_ 前缀。

AX_ 是 autoconf-archive 的标准 "namespace",以防止它与其他实现冲突。

例如,您会发现我的旧 attributes.m4 在许多地方被复制和使用,并且使用 CC_ 前缀代替(因为最初它只检查编译器。)