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
.
的一些其他技巧
上找到关于此事的相关(由我撰写的)文档
在我的项目中,我有文件夹 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
.