GNU Automake中文手册:构建makefile与configure

需积分: 10 2 下载量 130 浏览量 更新于2024-07-27 收藏 344KB PDF 举报
"automake 中文手册" GNU Automake 是一个自动化工具,用于帮助软件开发者生成符合GNU标准的Makefile.in和configure脚本,这些脚本是构建软件项目的关键文件。Automake遵循GNU软件规范,使得软件包能够在各种不同的Unix-like系统上进行编译和安装。 **通用性概念** - **通用操作**:Automake处理常见的构建任务,如编译源代码、链接目标和创建安装脚本。 - **深度**:它可以处理多层目录结构,确保所有源文件和依赖关系被正确处理。 - **严格性**:Automake强制执行一定的编码和组织规范,以保持软件包的一致性和可维护性。 - **统一命名机制**:它使用特定的命名规则来识别源文件、头文件和目标文件,如src/目录下的源代码和include/目录下的头文件。 - **派生变量是如何命名的**:Automake使用诸如LIBOBJS这样的变量来跟踪派生对象,如编译后的目标文件。 **一些实例软件包** - **一个简单的例子**:从零开始构建一个项目,包括创建基本的Makefile.am和configure.in文件。 - **一个经典的程序**:展示如何处理包含多个源文件和库的复杂项目。 - **创建etags和ctags**:Automake可以自动为源代码生成索引文件,方便代码浏览和搜索。 **创建`Makefile.in'** - `Makefile.am`是用户编写的主要文件,Automake会根据这个文件生成最终的Makefile。 **扫描`configure.in'** - **配置需求**:Automake分析configure.in文件,从中提取编译和安装所需的配置信息。 - **Automake能够识别的其它事情**:它能识别并处理Autoconf的宏,如AC_PROG_CC来检测C编译器。 - **自动生成的aclocal.m4**:Automake会生成aclocal.m4文件,包含项目特定的Autoconf宏。 - **由Automake支持的Autoconf宏**:例如,AM_INIT_AUTOMAKE宏用于初始化Automake过程。 - **编写你自己的aclocal宏**:开发者可以为项目添加自定义的宏。 **顶层`Makefile.am'** - 主Makefile.am通常在项目根目录下,定义整个项目的构建规则。 **创建程序和库** - **创建一个程序**:通过指定源文件和相关选项,Automake可以生成可执行程序。 - **创建一个库**:包括静态库和共享库,Automake处理库文件的创建和版本管理。 - **对LIBOBJS和ALLOCA的特别处理**:这两个变量用于跟踪库中的对象文件和动态内存分配。 - **创建一个共享库**:Automake支持创建跨平台的共享库。 - **创建一个程序时使用的变量**:如PROGRAMS变量用于指定项目中的可执行程序。 - **对Yacc和Lex的支持**:Automake可以处理由Yacc和Flex产生的源代码。 - **C++和其它语言**:Automake不仅限于C语言,也支持其他编程语言,如C++。 - **自动de-ANSI-fication**:某些情况下,Automake可以自动处理非标准的ANSI C扩展。 - **自动的依赖性跟踪**:Automake能自动生成源文件之间的依赖关系,确保构建顺序的正确性。 **其它派生对象** - **可执行的脚本**:Automake可以处理shell脚本和其他可执行文件。 - **头文件**:自动处理头文件的安装和更新。 - **与体系结构无关的数据文件**:如文本文件或配置文件,会被正确地安装到相应位置。 - **已创建的源代码**:如由SWIG生成的接口文件。 **其它GNU工具** - **Emacs Lisp**:支持Emacs的Lisp扩展和模式。 - **Gettext**:集成国际化和本地化工具,支持多语言。 - **Guile**:为项目提供嵌入式Scheme解释器。 - **Libtool**:处理库的编译和链接,提供跨平台兼容性。 - **Java**:Automake同样可以处理Java项目。 **创建文档** - **Texinfo**:支持创建Texinfo格式的文档,如项目的手册页。 - **Man手册**:生成man页面,方便命令行用户查阅。 **安装了些什么,清除了些什么,需要发布哪些文件** - 这些部分详细说明了Automake如何处理安装过程,以及在清理时删除哪些临时文件,以及哪些文件应包含在软件发布中。 **对测试套件的支持** - Automake可以生成和运行测试脚本,确保软件的正确性。 **改变Automake的行为** - 通过配置选项和环境变量,可以调整Automake的默认行为以适应特定项目的需求。 **其它规则** - 如与etags的接口,处理新的文件扩展名等,Automake允许定制特定的构建规则。 **条件(Conditionals)** - Automake支持条件语句,根据系统特性或编译选项来选择不同的构建行为。 **--gnu, --gnits 和 --cygnus 的效果** - 这些标志会影响Automake生成的Makefile的风格和兼容性,以适应不同的GNU工具链和平台。 **什么时候Automake不够用** - 对于非常特殊的构建需求,可能需要手动干预或使用更高级的构建系统。 **发布`Makefile.in'** - 生成的Makefile.in文件是最终用户在configure之后用来构建项目的输入。 **未来的某些想法** - Automake的未来版本可能会包含更多改进和新特性。 **索引** - 提供了完整的索引,方便查找手册中的具体信息。 Automake是GNU构建系统的重要组成部分,它简化了复杂项目构建的流程,使得软件开发更加高效和标准化。通过理解和使用Automake,开发者可以专注于编写代码,而将构建和安装的繁琐工作交给Automake来处理。