"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,开发者可以更专注于编写代码,而不是构建过程。