理解GNU make的后缀规则与Makefile编写
需积分: 50 81 浏览量
更新于2024-08-10
收藏 964KB PDF 举报
本文介绍了"老式风格的"后缀规则"在Makefile中的使用方法,这是在编写构建脚本时,尤其是与早期GNU make版本兼容时的重要概念。后缀规则是一种定义目标文件如何从源文件生成的方式,逐渐被更强大的模式规则所替代。
**后缀规则类型**
1. **双后缀规则**:这种规则定义了目标文件和源文件的后缀,如`.c.o`,意味着`.c`文件经过编译生成`.o`文件。等价于`%o : %c`的模式规则。
2. **单后缀规则**:只定义源文件的后缀,如`.c`,等价于`% : %.c`。如果后缀是Makefile已经识别的,那么它将被视为单后缀规则。
**规则的使用**
- **依赖文件**:后缀规则不包含依赖文件,只有目标文件和源文件的后缀关系。如果出现依赖文件,如`.c.o: foo.h`,那它就不是一个纯粹的后缀规则,而是表示`.c.o`依赖于`foo.h`,这通常应写为`%.o: %.c foo.h`。
- **命令**:没有命令的后缀规则是没有意义的,因为它不会覆盖Makefile的内置隐含规则。
- **扩展后缀列表**:通过`.SUFFIXES`伪目标可以添加或删除Makefile认识的后缀,例如`.SUFFIXES: .hack .win`将`.hack`和`.win`加入后缀列表。
此外,文章还提到了Makefile的其他部分,包括:
- **显式规则和隐晦规则**:显式规则是用户明确指定的,隐晦规则是Makefile内置的用于推断编译和链接步骤的规则。
- **变量的使用**:Makefile中可以定义变量来简化和复用命令。
- **自动推导**:make可以自动推导源文件和目标文件之间的依赖关系。
- **静态模式规则**和**伪目标**:静态模式规则允许更灵活地定义规则,伪目标如`.PHONY`用于标记总是需要重新执行的目标。
- **命令书写**:包括显示命令、命令执行控制以及嵌套`make`调用等。
- **变量的高级特性**:如变量的叠加、覆盖、多行定义等。
- **条件判断**和**函数**:在Makefile中实现条件分支和字符串、文件名的处理功能。
这篇文章详细阐述了Makefile中的后缀规则及其在构建过程中的应用,对于理解和编写Makefile具有指导价值,特别是对于需要与旧版Makefile保持兼容的项目。
点击了解资源详情
点击了解资源详情
138 浏览量
205 浏览量
429 浏览量
478 浏览量
2012-12-01 上传
1003 浏览量
物联网_赵伟杰
- 粉丝: 46
- 资源: 3953
最新资源
- MDIO:操作员决策模型-卡塞拉(Cadeira do1ºSemestre do3º)诺米诺大学(Mino da MiEI da Minho)
- react-tictactoe:经典游戏的全栈JavaScript实现
- recipe-app
- 中国风客厅家装模型设计
- 使用红外传感器进行眼动跟踪-项目开发
- Unity Highlight Plus,模型轮廓高亮
- blockchain:测试区块链解决方案的游乐场
- 公司薪酬制度下载
- cse6040fa20:CSE 6040 校园 MSA 版本的课堂演示笔记本,2020 年秋季
- (修改)04-06黄仲秋 2013261878 华为技术有限公司手机出口存在的问题及对策分析.zip
- python_training:Python新手训练营,面向对象的编程第2部分
- 网站:简介CS 2的htmlcss文件
- insclix.ui.gwt:ui包装器组件
- 古牌楼3d模型
- 工伤事故报告表excel模版下载
- Learnist:这是在线课程网站登陆页面的基本前端网页设计