GNU Automake中文手册:构建Makefile.in的全面指南

3星 · 超过75%的资源 需积分: 4 5 下载量 132 浏览量 更新于2024-07-29 收藏 344KB PDF 举报
"automake中文手册" GNU Automake 是一个自动化工具,用于生成遵循GNU标准的Makefile.in文件,这些文件随后被configure脚本用来构建软件项目。Automake使得软件开发者可以按照一致且易于维护的方式组织源代码,并确保遵循GNU构建约定。 **通用性概念** - **通用操作**:Automake处理基本的构建任务,如编译源代码、链接目标、生成文档等。 - **深度**:Automake可以处理项目中的多层次目录结构,确保每个层次的构建规则都被正确处理。 - **严格性**:Automake遵循严格的规则,确保软件包的构建过程符合GNU规范。 - **统一命名机制**:它使用特定的命名约定,例如`Makefile.am`,来指示何处放置构建规则。 - **派生变量是如何命名的**:Automake使用如LIBOBJS这样的变量,用于表示构建过程中的中间目标。 **一些实例软件包** 手册通过简单和复杂示例解释了如何使用Automake,包括创建可执行程序、库、文档等。 **创建`Makefile.in'** `Makefile.am`是Automake的主要输入文件,其中定义了构建规则、目标和变量。Automake会从这些文件中生成最终的`Makefile.in`。 **扫描`configure.in`** Automake会读取`configure.in`或`configure.ac`文件,这个文件包含了项目的配置信息,如检测系统特性、设置变量等。 **创建程序和库** - **创建一个程序**:通过定义规则和目标,Automake可以帮助创建可执行程序。 - **创建一个库**:包括静态库和动态库的创建,以及管理库文件的规则。 - **对LIBOBJS和ALLOCA的特别处理**:LIBOBJS用于存储库的源代码对象,而ALLOCA是用于内存分配的宏。 - **创建一个共享库**:涉及SO版本控制和符号导出。 - **创建一个程序时使用的变量**:如PROGNAME、SOURCES等变量在构建可执行文件时发挥作用。 - **对Yacc和Lex的支持**:Automake可以自动处理由Yacc和Flex生成的源代码文件。 - **C++和其它语言**:Automake支持多语言项目,包括C++和其他编程语言。 - **自动de-ANSI-fication**:对于非标准C函数的自动转换。 - **自动的依赖性(dependency)跟踪**:Automake能自动检测源文件的依赖性,以便在编译时更新目标。 **其它派生对象** - **可执行的脚本**:处理shell脚本或其他脚本语言的可执行文件。 - **头文件**:管理头文件的复制和安装。 - **与体系结构无关(Architecture-independent)的数据文件**:如配置文件、数据表格等。 - **已创建的源代码**:例如,由swig或其他工具生成的源代码。 **其它GNU工具** Automake与其他GNU工具如aclocal、Emacs Lisp、Gettext、Guile、Libtool和Java的集成,以支持国际化、库管理等。 **创建文档** - **Texinfo**:生成项目文档的Texinfo格式。 - **Man手册**:创建man页面。 **安装了些什么,清除了些什么,需要发布哪些文件** Automake管理软件包的安装、清理和发布过程,确保正确的文件被复制到目标位置。 **对测试套件(testsuites)的支持** Automake支持构建和运行测试套件,确保软件的正确性。 **改变Automake的行为** 用户可以通过命令行选项如--gnu、--gnits和--cygnus来调整Automake的行为,以适应特定的需求或环境。 **条件(Conditionals)** Automake支持条件语句,以根据不同的系统特性和配置选择合适的构建规则。 **未来的想法** 手册可能还讨论了Automake的未来发展方向和改进计划。 **索引** 提供了一个详细的索引,方便用户查找特定主题。 总结来说,Automake中文手册为开发者提供了全面的指南,帮助他们有效地管理GNU风格的软件构建过程,确保项目遵循最佳实践和标准。通过理解和使用Automake,开发者可以更专注于编写代码,而不是构建过程。