"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来处理。