Makefile编写指南:从基础到高级
5星 · 超过95%的资源 需积分: 16 133 浏览量
更新于2024-07-29
5
收藏 528KB PDF 举报
"跟我一起写Makefile"
本书详细介绍了如何编写Makefile,涵盖了Makefile的基本概念、规则、变量、命令以及高级技巧。以下是各章节的主要知识点:
### 第一章:概述
这一章给出了Makefile的基本介绍,说明了其在软件构建过程中的作用,即自动化编译和链接过程,提高开发效率。
### 第二章:关于程序的编译和链接
本章讨论了编译和链接的基本原理,解释了为何需要Makefile来管理这些过程,以及如何通过Makefile简化复杂的构建流程。
### 第三章:Makefile介绍
- **Makefile的规则**:描述了规则的结构,包括目标、依赖和命令,以及规则如何指导make进行工作。
- **一个示例**:提供了一个简单的Makefile实例,展示了如何定义规则以编译源代码。
- **make是如何工作的**:解释了make如何解析Makefile,查找依赖关系,并执行命令。
- **makefile中使用变量**:介绍如何在Makefile中定义和使用变量,以减少重复和提高可读性。
- **让make自动推导**:说明了make如何自动推导目标文件的依赖关系。
- **另类风格的makefile**:探讨了不同的编写Makefile的风格和技巧。
- **清空目标文件的规则**:讲解了如何设置清理目标,如`clean`目标,用于删除生成的中间和目标文件。
### 第四章:Makefile总述
- **Makefile里有什么?**:阐述了Makefile可以包含的目标、规则、变量、函数等元素。
- **Makefile的文件名**:讨论了默认的Makefile文件名(通常是`Makefile`或`makefile`)及其查找逻辑。
- **引用其它的Makefile**:介绍了如何在主Makefile中包含其他Makefile,实现模块化管理。
- **环境变量MAKEFILES**:说明了如何通过环境变量指定额外的Makefile。
- **make的工作方式**:讨论了make的递归执行和并行构建策略。
### 第五章:书写规则
- **规则举例**:提供了多种规则的实例,包括目标和依赖的不同组合。
- **规则的语法**:详细介绍了规则的语法结构,如冒号、制表符的使用。
- **在规则中使用通配符**:解释了如何使用`*`和`?`等通配符匹配多个文件。
- **文件搜寻**:描述了make如何寻找文件,以及`VPATH`变量的作用。
- **伪目标**:讲解了像`.PHONY`这样的伪目标,它们不对应实际文件,用于表示特定的任务。
- **多目标**:说明了如何在一个规则中处理多个目标。
- **静态模式**:介绍了静态模式规则,用于创建一组相似的规则。
- **自动生成依赖性**:讲解了如何动态生成目标文件的依赖,如通过`gcc -M`生成头文件依赖。
### 第六章:书写命令
- **显示命令**:讨论了如何控制命令是否显示在终端上。
- **命令执行**:解释了命令的执行时机和顺序。
- **命令出错**:讲述了当命令执行失败时,make的行为。
- **嵌套执行make**:介绍了在Makefile中调用其他make实例的方法。
- **定义命令包**:说明了如何使用`\(`和`\)`包裹命令,防止特殊字符被误解。
### 第七章:使用变量
- **变量的基础**:涵盖了变量的定义、赋值和使用。
- **变量中的变量**:讨论了变量展开和嵌套变量的处理。
- **变量高级用法**:包括函数式变量、变量的预定义和扩展。
- **追加变量值**:介绍了如何向已存在的变量添加值。
- **override指示符**:允许覆盖Makefile外部的环境变量。
- **多行变量**:展示了如何定义跨越多行的变量。
- **环境变量**:说明了如何在Makefile中使用环境变量。
- **目标变量**:针对特定目标的变量,如`$(obj:.o=.c)`。
- **模式变量**:类似于模式规则的变量,可以根据模式进行替换。
### 第八章至第十三章:
后续章节继续深入讲解了Makefile的高级特性,包括条件判断、函数的使用、make的运行机制、隐含规则、更新函数库文件等内容。这些章节帮助读者掌握更复杂的Makefile编写技巧,以便构建更高效、灵活的构建系统。
通过这本书的学习,读者将能够熟练地编写和理解Makefile,从而有效地管理和自动化项目的构建过程。
2012-02-01 上传
2023-09-20 上传
2011-09-14 上传
2023-06-07 上传
2023-09-04 上传
2023-05-02 上传
2023-10-06 上传
2023-08-29 上传
2023-06-05 上传
hijxyz
- 粉丝: 6
- 资源: 6
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍