理解与编写Makefile指南
需积分: 17 58 浏览量
更新于2024-07-21
1
收藏 572KB PDF 举报
"跟我一起写Makefile.pdf" 是一本由陈皓编著,祝冬华整理的关于Makefile的教程,旨在深入浅出地教授读者如何编写Makefile。这本书分为多个部分,涵盖了Makefile的基本概念、规则、变量使用、条件判断以及函数应用等内容。
**第一部分:概述**
这部分介绍了Makefile的重要性,它是自动化构建程序的关键工具,用于编译和链接源代码,简化了重复的构建过程。
**第二部分:关于程序的编译和链接**
这里讲述了程序的编译和链接过程,为理解Makefile的作用打下基础。
**第三部分:Makefile介绍**
1. **规则**:Makefile的规则定义了如何从源文件生成目标文件。
2. **示例**:提供了一个简单的Makefile实例来演示规则的使用。
3. **工作原理**:解释了make是如何根据规则来决定哪些文件需要重新编译。
4. **变量**:介绍了Makefile中如何定义和使用变量。
5. **自动推导**:说明了make如何自动推导依赖关系。
6. **另类风格**:讨论了不同风格的Makefile编写方式。
7. **清空目标文件**:展示了如何制定清除目标文件的规则。
**第四部分:Makefile总述**
1. **内容构成**:包括显式规则、隐晦规则、变量定义、文件指示和注释。
2. **文件名**:讨论Makefile的默认名称和如何指定不同的名字。
3. **引用其他Makefile**:解释了如何在一个Makefile中包含另一个Makefile的内容。
4. **环境变量MAKEFILES**:介绍了这个变量对Makefile的影响。
5. **工作方式**:详细阐述make执行Makefile的过程。
**第五部分:书写规则**
1. **规则示例**:提供了更多的规则编写案例。
2. **规则语法**:讲解了规则的正确结构。
3. **通配符**:如何在规则中使用通配符来匹配多个文件。
4. **文件搜寻**:描述了make如何查找依赖文件。
5. **伪目标**:如`.PHONY`,用于标识那些实际上不存在的但需要执行的目标。
6. **多目标**:一个规则可以创建多个目标文件的方法。
7. **静态模式**:静态模式规则允许灵活地指定模式。
8. **自动生成依赖性**:通过编译器生成依赖性的方法。
**第六部分:书写命令**
1. **显示命令**:如何在执行时打印命令。
2. **命令执行**:解释了命令何时以及如何被运行。
3. **命令出错**:当命令执行失败时,make的响应策略。
4. **嵌套执行make**:在Makefile中调用其他make进程。
5. **命令包**:如何定义一组命令作为一个单元来执行。
**第七部分:使用变量**
1. **基础**:介绍了变量的赋值和使用。
2. **变量中的变量**:如何在变量中嵌套其他变量。
3. **高级用法**:如函数式变量和扩展变量等复杂用法。
4. **追加值**:向变量追加新值而不是覆盖已有值。
5. **override指示符**:强制覆盖Makefile中的变量设置。
6. **多行变量**:如何处理跨越多行的变量值。
7. **环境变量**:Makefile中如何使用环境变量。
8. **目标变量**:与特定目标关联的变量。
9. **模式变量**:与模式规则相关的变量。
**第八部分:使用条件判断**
1. **示例**:给出了条件判断的实际应用。
2. **语法**:详细说明了条件语句的结构。
**第九部分:使用函数**
1. **调用语法**:如何在Makefile中调用函数。
2. **字符串处理函数**:包括`subst`、`patsubst`、`strip`、`findstring`、`filter`、`filter-out`、`sort`、`word`、`wordlist`、`words`、`firstword`等,以及它们的功能和用法实例。
3. **文件名操作函数**:如`dir`和`notdir`,用于处理路径和文件名。
这本书全面覆盖了Makefile的各个方面,是学习和掌握Makefile编写技巧的重要参考资料。通过阅读,读者能够熟练编写和理解Makefile,提高项目构建的效率。
623 浏览量
132 浏览量
2025-01-08 上传
2025-01-08 上传
2025-01-08 上传
2025-01-08 上传
zousimaiji
- 粉丝: 1
- 资源: 4
最新资源
- 行业文档-设计装置-一种具有储存功能的杯子.zip
- caidata:收集,存储和提供CAI Bot的Planetside 2 CensusEvent数据
- MUNI-FI-PA179:MUNI-FI:PA179 20182019
- 宇泰 UT-8811 USB转RS232驱动程序.zip
- nsis打包工具教程集合
- rust-music-theory —锈音乐理论库-Rust开发
- XYCMS养老院建站系统 v3.5
- moveit-next
- Demolito:UCI国际象棋引擎
- 任务栏:产品定义和项目管理文件
- 03_gpio_key.rar
- part_2b_decoding_vectorized.zip
- java-mail-lib
- 全景图爬取程序Pano
- isahc-有趣的实用HTTP客户端-Rust开发
- 宇泰 UT-860 USB TO RS-232驱动.zip