介绍autoconf是M4宏的扩展,用于生成配置脚本。该脚本将帮助开发人员在不同的环境中选择合适的工具。同时可以在这些宏中定义automake来自定义Makefile的一些属性。文章[1]中使用下图来表示autoconf的过程。这从configure.in(或configure.ac)开始。configure.in在运行“autoreconf-f”时作为输入。如果定义了AM_INIT_AUTOMAKE(xx),automake将自动运行以处理Makefile.am。如果定义了AC_CONFIG_HEADERS(xx),autoheaders将自动运行生成config.h.in以在某些头文件中定义宏。configure.ac中定义的一些变量将反映在Makefile.in和config.in中。autoconf生成的目标文件是“configure”。这是一个配置脚本。运行configure,这个脚本会读取Makefile.in和config.in,这会生成最终的Makefilet和config.h。如何在configure中添加一个选项来支持编译中的调试当我们要对代码进行调试时,我们经常会用到GCC的编译选项“-g-O0”。当然,最简单的方法是在configure时直接设置CFLAGS宏,如下:./configureCFLAGS="-g-O0"但是为此尝试添加一个调试开关。目标是在调用“./configure--enable-debug”时,最终的Makefile会使用编译选项“-g-O0”,方便调试。在configure.ac中,添加以下定义:#debugoptionssupportAC_ARG_ENABLE([debug],[AS_HELP_STRING([--enable-debug],[debugprogram(defaultisno)])],[CFLAGS="${CFLAGS}-g-O0"],[CFLAGS="-g-O2"])其中AC_ARG_ENABLE宏定义了一个输入选项“--enable-debug”。CFLAGS在定义时采用“-g-o0”。参考资料[1]https://www.ibm.com/developer...autoconf和automake生成Makefile的例子[2]https://www.zhihu.com/questio...介绍了autotools的来龙去脉。
