by pascal4123
1. autoscan: 生成系统配置草案 configure.ac
autoscan搜索指定目录树(缺省是当前目录)里的源代码,生成configure.scan,需人工改名为configure.ac(或configure.in, 这是老版的约定);
在configure.ac中,宏
AM_INIT_AUTOMAKE(FULL-PACKAGE-NAME, VERSION)必须要有的;
如果需要自己生成库并链接到程序中,还需要定义宏
AC_PROG_RANLIB;
如果用到libtool,或要生成la动态链接库,需要定义宏
AC_PROG_LIBTOOL!并且要让automake能找到ltmain.sh
其他的宏的意义:
AC_PREREQ 声明本文件要求的autoconf版本;
AC_INIT 用来定义软件的名称和版本等信息;
AC_CONFIG_SRCDIR 用来侦测所指定的源码文件是否存在,来确定源码目录的有效性。这个参数一般不需要修改。
AC_CONFIG_HEADER 用于生成config.h文件,以便autoheader使用。
在configure.ac中, #作为comment的开头符
2. aclocal: 基于configure.ac生成aclocal.m4(包含了automake所需的宏).
开始时aclocal扫描所有的*.m4,然后是configure.ac,把搜索到的宏放到aclocal.m4中,这个文件也可以放用户自定义的宏.
##作为说明的开头符
3. autoconf: 基于configure.ac生成configure脚本.
4. autoheader: 产生config.h.in
5. automake: 基于makefile.am生成makefile.in
注意用 automake
--add-missing 安装 install-sh, missing, depcomp
AUTOMAKE_OPTIONS 软件检查等级(有3级 foreign, gnu, gnits;gnu是默认设置)。在执行automake时,它会检查目录下是否存在标准GNU软件包中应具备的各种文件,例如AUTHORS、ChangeLog、NEWS等文件。我们将其设置成foreign时,automake会改用一般软件包的标准来检查。只适用于等层目录中的Makefile.am。 INCLUDES指定了在编译阶段(与连接阶段相对)中传递给C编译器的标志。
bin_PROGRAMS列出了要编译的程序xxx。
xxx_SOURCES列出了要编译和连接的文件,这些文件是依赖生成xxx程序的。在这个变量中的所有文件都被自动包含在发布包中。只有在`_SOURCES'中列出的头文件才会被包含在发布版本中,否则都将被忽略。除了.h, .c,.cpp等c/c++源文件之外,Lex(`.l')和yacc (`.y')文件也可被列出。
xxx_LDADD列出其它需要链接到
xxx
程序中的目标文件和库。
xxx_LDFLAGS传递给链接器的选项。
不同于xxx_LDADD的地方是不能自动计算依赖关系.6. configure: 生成系统配置文件. 把config.h.in变成config.h, 在模版文件makefile.in中插入/改写配置相关信息,生成makefile。生成本次安装配置信息文件config.status.
7. make: 构建系统
8. make install: 安装系统
通常安装到/usr/local/bin, /usr/local/man. 也可以在configure参数中指定安装到其他目录 '
--prefix=PREFIX'. 要安装到系统目录,必须有root权限.
makefile.am中的变量
EXTRA_DIST列出了需要包含在发布软件包(压缩的tar文件)中的文件,最重要的文件(如作为2进制文件或库的源文件的文件)会自动包含进来.
顶层的makefile.am中的变量
ACLOCAL_AMFLAGS告诉aclocal到哪找到*.m4文件
9. make uninstall: 删除已安装的文件
阅读(691) | 评论(0) | 转发(0) |