GNU Automake中文手册:构建自动化利器
需积分: 4 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标准的项目。
2021-04-26 上传
2021-04-22 上传
2024-11-13 上传
2024-11-13 上传
2024-11-13 上传
2024-11-13 上传
2024-11-13 上传
2024-11-13 上传
u010552545
- 粉丝: 0
- 资源: 1
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载