配置configure.ac
用自动生成Makefile的工具来生成Makefile的过程中,需要用autoscan命令来生成configure.scan文件,然后将它改名字为configure.ac或者configure.in,然后就来更改其中的一些相关信息来完成下面需要完成的配置,那么这个configure.ac怎么来写?今天我们就将这个过程分开来和大家共同研究和探讨下。
我们在生成的过程中会用autoconf命令来处理configure.ac/configure.in文件,生成一个configure的脚本。生成后的configure文件是一个可以移植的shell脚本,运行的时候它检查编译环境,来决定哪些库是可以用的,所用到的平台有哪些个特征,那些个头文件和库是已经找到的等等, 然后收集到的这些信息,它修改编译标记,生成一个Makefile文件,同时生成一个包含已定义的预处理符号的config.h文件。configure并不需要运行autoconf,所以我们在发布应用程序之前生成这个文件,如此我们就不必有autoconf的软件包了。
AC_INIT总是configure.in中的第一个宏。它扩展为许多可由其他configure脚本共享的模板文件代码。这些代码解析传到 configure中的命令行参数。这个宏的一个参数是一个文件名,这个文件应该在源代码目录中,它用于健全性检查,以保证configure脚本已正确定位源文件目录。
AM_CONFIG_HEADER指定了要创建的头文件,差不多总是config.h。创建的头文件包含由configure定义的C预处理符号。最低限度应该定义PACKAGE和VERSION符号,这样可以将应用程序名称和版本传送到代码中,而无须对它们硬编码(非公用的源文件应该包含 config.h(#include)以利用这些定义。然而,不要将config.h文件安装到系统中,因为它有可能与其他的软件包冲突)。
AM_INIT_AUTOMAKE初始化automake。传到这个宏里的参数是要编译的应用程序的名称和版本号(这些参数成为config.h中定义的PACKAGE和VERSION值)。
AM_MAINTAINER_MODE关闭缺省时仅供程序维护者使用的makefile目标,并修改以使configure能理解 –enable-maintainer-mode选项。–enable-maintainer-mode将maintaineronly目标重新打开。仅供维护者使用的makefile目标允许最终用户清除自动生成的文件,比如configure,这意味着要修复编译故障,必须安装有autoconf和automake软件。注意,因为autogen.sh脚本主要是给开发人员用的,autogen.sh会自动传递一个–enable- maintainer-mode选项给configure。
AM_ACLOCAL_INCLUDE指定一个附加的目录,用于搜索m4宏。在这里,它指定为macros子目录。在这个目录中应该有Gnome宏的拷贝。
GNOME_INIT给configure添加一个与Gnome相关的命令行参数个数,并为Gnome程序定义一些makefile变量,这些变量中包含了必要的预处理程序和链接程序标志。这些标志是由gnome-config脚本取得的。安装gnome-libs时会安装gnome- config脚本。
AC_PROG_CC定位C编译器。
AC_CHECK_LIB如果程序中加入了多线程用到的锁的话就要加入像 AC_CHECK_LIB([pthread

文章详细介绍了如何使用configure.ac和相关工具(如autoconf、automake)生成Makefile的过程。配置涉及AC_INIT、AM_CONFIG_HEADER、AM_INIT_AUTOMAKE等宏,以及AC_PROG_CC、AC_CHECK_LIB等检查。还提到了交叉编译时--host参数的使用,确保正确指定编译工具链,并展示了编译流程示例。


被折叠的 条评论
为什么被折叠?



