GNU Automake中文手册:构建自动化利器

需积分: 4 1 下载量 85 浏览量 更新于2024-07-25 收藏 344KB PDF 举报
"Automak中文手册" GNU Automake 是一个自动化构建系统,它帮助程序员遵循GNU标准构建过程,生成符合GNU编程规范的Makefile.in文件。这个中文手册详细介绍了Automake的各种特性和使用方法。 **1. 通用性概念** - **通用操作**:Automake处理常见的构建任务,如编译源代码、创建库和可执行文件等。 - **深度**:Automake可以处理多层次的目录结构,确保每个子目录都有相应的Makefile.am文件。 - **严格性**:Automake遵循严格的规则来确保项目的一致性和可移植性。 - **统一命名机制**:Automake采用特定的变量和文件命名约定,如`Makefile.am`和`configure.in`。 - **派生变量是如何命名的**:Automake自动为派生目标创建变量,如`LIBOBJS`和`ALLOCA`。 **2. 实例软件包** - **一个简单的例子**:从创建基本的`configure.in`开始,逐步解释如何构建完整的项目。 - **一个经典的程序**:展示如何处理包含多个源文件和依赖关系的复杂程序。 - **创建etags和ctags**:如何生成代码导航工具所需的索引文件。 **3. 创建`Makefile.in'** `Makefile.in`是Automake生成的核心文件,它在`configure`脚本运行后被转换成最终的Makefile。 **4. 扫描`configure.in'** - **配置需求**:Automake分析`configure.in`以确定项目需要的编译器和库。 - **Automake能识别的其它事情**:包括识别自定义宏和条件语句。 - **自动生成的`aclocal.m4`**:Automake会生成`aclocal.m4`,包含Autoconf宏。 - **Automake支持的Autoconf宏**:如`AM_INIT_AUTOMAKE`和`AC_PROG_CC`等。 **5. 创建程序和库** - **创建一个程序**:定义源文件,设置编译选项。 - **创建一个库**:包括静态库和共享库的创建。 - **对LIBOBJS和ALLOCA的特别处理**:这些变量用于管理库中的对象文件。 - **创建一个共享库**:处理动态链接库的生成。 - **创建一个程序时使用的变量**:如`bin_PROGRAMS`用于定义可执行文件。 - **对Yacc和Lex的支持**:Automake能处理解析器和词法分析器生成的源文件。 - **C++和其它语言**:支持多语言编程。 - **自动de-ANSI-fication**:自动处理非ANSI C的兼容性问题。 - **自动的依赖性跟踪**:Automake自动生成源文件的依赖关系,简化构建过程。 **6. 其它派生对象** - **可执行的脚本**:处理shell脚本和其他可执行文件。 - **头文件**:如何处理公共头文件的安装。 - **与体系结构无关的数据文件**:如数据文件和配置文件的安装。 - **已创建的源代码**:处理由其他工具生成的源文件。 **7. 其它GNU工具** - **Emacs Lisp**:支持Emacs相关扩展和包的构建。 - **Gettext**:处理国际化和本地化。 - **Guile**:构建Guile扩展模块。 - **Libtool**:管理库的版本和链接。 - **Java**:Java项目的构建支持。 **8. 创建文档** - **Texinfo**:创建Texinfo格式的文档。 - **Man手册**:生成man页。 **9. 安装、清除和发布的文件** - 描述了如何定义安装路径、清理目标以及发布时需要包含的文件。 **10. 对测试套件的支持** Automake提供构建和运行测试套件的机制。 **11. 改变Automake的行为** 通过条件语句和命令行选项调整Automake的行为。 **12. 其它规则** - 如处理新的文件扩展名和与etags的接口。 **13. 条件(Conditionals)** - 如`--gnu`、`--gnits`和`--cygnus`选项的影响。 **14. 何时Automake不够用** 指出Automake的限制,并提供解决策略。 **15. 发布`Makefile.in'** 讨论如何准备项目以供发布。 **16. 未来的某些想法** 提及Automake未来可能的改进和发展方向。 **17. 索引** 提供完整的目录,方便查找特定主题。 这个中文手册是Automake用户的重要参考资料,它涵盖了从基础到高级的各个方面,帮助开发者有效地构建和维护符合GNU标准的项目。