GNU make 中文手册:理解和使用指南
需积分: 36 57 浏览量
更新于2024-07-29
收藏 1.34MB PDF 举报
"GNUmake中文手册,由徐海兵翻译整理,涵盖了从概述到Makefile规则的详细内容,包括准备知识、Makefile的结构、规则的编写与应用等,旨在为读者提供全面的GNUmake使用指南。"
GNU `make` 是一个自动化构建工具,广泛应用于软件工程和其他需要编译或执行一系列任务的项目中。这个中文手册是英文官方手册的高质量翻译,适合对GNU make不熟悉或想要深入理解其工作原理的读者。
第一章:概述
本章简要介绍了`make`的基本概念,包括其在软件构建中的作用以及学习`make`所需的预备知识,如基本的编程和命令行操作经验。
第二章:GNU make介绍
这一章详细介绍了Makefile,它是`make`工作的核心。内容包括:
- Makefile简介:讲解了Makefile的构成和基本结构。
- Makefile规则:解释了规则的定义,如何指定目标和依赖。
- 简单的示例:通过实例展示了一个基本的Makefile是如何工作的。
- make如何工作:阐述了`make`程序解析和执行Makefile的流程。
- 指定变量:讨论了如何在Makefile中定义和使用变量。
- 自动推导规则:介绍了`make`如何自动推断文件的生成规则。
- 另类风格的makefile:提到了不同风格的Makefile编写方式。
- 清除工作目录过程文件:讲述了如何设置清理目标以删除中间或临时文件。
第三章:Makefile总述
该章深入探讨了Makefile的各个方面,包括:
- Makefile的内容:讨论了Makefile可以包含的信息。
- makefile文件的命名:说明了Makefile的默认名称及如何指定不同的Makefile。
- 包含其它makefile文件:讲解了如何用`include`指令合并多个Makefile。
- 变量MAKEFILES:描述了这个特殊变量的作用,用于指定额外的Makefile。
- 变量MAKEFILE_LIST:解释了记录所有加载的Makefile的这个变量。
- 其他特殊变量:列举了一些重要的预定义变量及其用途。
- makefile文件的重建:如何让`make`自身成为构建的目标。
- 重载另外一个makefile:如何在运行时改变Makefile。
- make如何解析makefile文件:详细解析了`make`解析规则、变量和条件语句的过程。
第四章:Makefile的规则
本章主要聚焦于Makefile规则的细节,包括:
- 一个例子:通过实际的例子来演示规则的使用。
- 规则语法:详细阐述了规则的书写格式。
- 依赖的类型:区分了静态和动态依赖。
- 文件名使用通配符:如何使用通配符匹配多个文件,并指出了其潜在问题和解决方案。
- 目录搜寻:介绍了`VPATH`变量和`vpath`关键字,用于查找不在当前目录的文件。
- Makefile伪目标:讲解了像`.PHONY`这样的伪目标,确保目标总是被重新构建。
- 强制目标:定义没有命令或依赖的规则,用于控制`make`的行为。
- 空目标文件:创建只用于标记目的的空文件。
- Makefile的特殊目标:如`.SILENT`, `.INTERMEDIATE`等,它们影响`make`的行为。
- 多目标:如何在一个规则中处理多个目标。
- 多规则目标:一个目标可能有多个规则,`make`如何处理这种情况。
- 静态模式:引入静态模式规则,允许更灵活的规则定义。
这本中文手册为读者提供了一条清晰的学习路径,逐步引导他们掌握`make`工具的使用,从而高效地管理项目的构建过程。无论是初学者还是经验丰富的开发者,都能从中受益。
2008-11-14 上传
2008-12-12 上传
2009-04-03 上传
2024-11-06 上传
2024-11-06 上传
2024-11-06 上传
2024-11-06 上传
liansp
- 粉丝: 1
- 资源: 12
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫