autotools:如何在 configure.ac 中包含我自己的 m4 宏

autotools: how to include my own m4 macro in configure.ac

在我的项目中,我有文件夹 m4。在这个文件夹中,我有 ax_cxx_version.m4 文件,其中包含 AX_CHECK_CXXFLAGS 宏。

然后我将 m4 文件夹包含在 autoconf.ac 中:

AC_CONFIG_MACRO_DIR([m4])

并执行 autoconf。

当我运行配置脚本时失败并出现错误:

checking complex usability... yes
checking complex presence... yes
checking for complex... yes
checking size of int64_t... 8
checking for long long int... yes
./configure: line 7235: syntax error near unexpected token `-std=c++0x'
./configure: line 7235: `AX_CHECK_CXXFLAGS(-std=c++0x -pedantic -Wall)'

如果我将我的宏添加到 aclocal.m4,那么一切都运行良好。

包含我自己的宏的正确方法是什么?

问题是 AC_CONFIG_MACRO_DIR 实际上并没有设置包含路径,而是让 aclocal 生成正确的文件。但是 aclocal 是 automake 的一部分,如果你只是执行 autoconf 它不会被调用。

您可以开始调用 autoreconf 而不是 autoconf 来重新生成您的文件,这应该可以解决问题。或者如果你不想依赖 automake,你可以使用 m4_include.

的一些其他技巧

可在 Autotools Mythbuster.

上找到关于此事的相关(由我撰写的)文档