--------------------纯属个人笔记,防止遗忘--------------------
autoscan 扫描原始文件以产生一个 configure.scan 文件
可以通过修改configure.scan来编写自己的configure.ac,用来自动生成configure脚本
--------------------以下是GUN m4,即configure.in中使用的宏的语法:
dnl:注释行
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]):该宏用来检查源代码所在路径,必須在所有宏前加入 AC_INIT 宏
AC_OUTPUT:文件结尾必须加上
AC_PROG_CC:检查系统可用的C编译器,若源代码是用C写的就需要这个宏
AM_INIT_AUTOMAKE([foreign -Wall -Werror]):用来初始化automake的参数,定义编译选项------必须
AC_CONFIG_FILES([Makefile]):用来从Makefile.in生成Makefile,Makefile.in是automake根据Makefile.ac生成------必须
实际上,这里使用 Automake 时,还需要一些其他的宏,这些额外的宏我们用 aclocal来帮助产生。執行 aclocal会产生aclocal.m4 文件,如果无特别的用途,可以不需要修改它,用 aclocal 所产生的宏会告诉 Automake如何动作。
-------------------以下是Makefile.am的语法,Makefile.am是configure脚本用来产生Makefile.in的宏文件:
AUTOMAKE_OPTIONS :设置 automake 的选项。Automake 主要是帮助开发 GNU 软件的人员来维护软件,所以在执行 automake 时,会检查目录下是否存在标准 GNU 软件中应具备的文件,例如 'NEWS'、'AUTHOR'、'ChangeLog' 等文件。设置 foreign 时,automake 会改用一般软件的标准来检查。
bin_PROGRAMS :定义要产生的执行文件名。如果要产生多个执行文件,每个文件名用空白符隔开。
hello_SOURCES:定义 'hello' 这个执行程序所需要的原始文件。如果 'hello'这个程序是由多个原始文件所产生,必須把它所用到的所有原始文件都列出来,以空白符隔开。假设 'hello' 还需要 'hello.c'、'main.c'、'hello.h' 三个文件的话,则定义:hello_SOURCES= hello.c main.c hello.h 。如果定义多个执行文件,则对每个执行程序都要定义相对的filename_SOURCES。
编辑好 Makefile.am 文件,就可以用 automake --add-missing来产生 Makefile.in。加上 --add-missing 选项来告诉 automake顺便假如包装一个软件所必须的文件。Automake产生生出來的 Makefile.in 文件是完全符合 GNU Makefile 的惯例,只要执行 configure这个shell script 便可以产生合适的 Makefile 文件了。
-------------------下面是一个简单项目的过程:
项目只有简单的一个文件:test.c
1、首先执行autoscan自动生成configure.scan文件
2、修改configure.scan文件,生成configure.ac文件,注意 AM_INIT_AUTOMAKE 和 AC_CONFIG_FILES必须有
3、执行aclocal生成aclocal.m4文件
4、编写Makefile.am和config.h.in文件
5、执行automake --add-missing
6、执行autoconf生成configure脚本,到此大功告成