在我的项目中,我有一个文件夹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
实际上并没有设置include路径,而是让aclocal
生成正确的文件。但是aclocal
是automake的一部分,如果您只是执行autoconf
,就不会调用它。
您可以开始调用autoreconf
而不是autoconf
来重新生成文件,这样就可以了。或者,如果你不想依赖automake,你可以在m4_include
中使用一些其他技巧。
关于此事的相关文件(由本人撰写)可在Autotools Mythbuster上查阅。