GNU make 中的特性溯源:模式规则与历史版本差异

需积分: 4 15 下载量 50 浏览量 更新于2024-08-09 收藏 978KB PDF 举报
"源自其他版本的特点-layui当点击文本框时弹出选择框显示选择内容的例子" 这篇资源主要讨论了`makefile`中的一些特性,这些特性来源于不同的make工具版本。`make`是一个构建自动化工具,它根据规则来编译、链接或者其他方式处理文件。以下是一些关键知识点: 1. **模式规则**:使用模式字符“%”的规则在多个版本的make中存在,允许创建通用的构建规则。`10.5 模式规则`章节详细介绍了这一点。 2. **规则链与隐含的中间过程文件**:首次出现在Stu Feldman的make版本中,并在AT&T的Unix系统中得到应用。`10.4 隐含规则链`章节对此进行了阐述。 3. **自动化变量“$^”**:代表规则的所有依赖文件,但不确定是由哪个特定的make版本引入的。`10.5.3 自动化变量`章节提供了更多细节。 4. **命令行的“what if”选项(-W)**:据称是Andrew Hume在mk中首次提出的,允许预览命令执行的结果。`9.7 make的命令行选项`中有相关说明。 5. **并发执行**:支持并发执行命令的功能在多个make版本中都有实现,但System V和BSD未实现。`5.3 并发执行命令`章节详细讨论了这一特性。 6. **变量的模式替换引用**:源自SunOS 4,允许通过模式匹配来替换变量值。在GNU make中,`6.3 变量的高级用法`章节介绍了函数`patsubst`提供的类似功能。 7. **命令行前的“+”字符**:在IEEE Standard 1003.2-1992 (POSIX.2)中定义,具有特殊含义,用于确保命令执行不会被缓存。`9.3 替代命令的执行`中有所解释。 8. **追加赋值“+=”**:这一语法特性来自SunOS 4,用于向变量追加值,详细内容可在`6.6 追加变量值`找到。 9. **静态库成员列表作为目标**:`ARCHIVE(MEM1 MEM2...)`语法源自SunOS 4的make,允许直接指定静态库的成员。`11.1 库成员作为目标`章节对此进行了解释。 10. **“-include”指令**:从SunOS 4的make继承,即使包含的文件不存在也不会出错。`3.3 包含其它makefile文件`部分对此进行了描述。 以上这些特性都是在不同版本的`make`工具中逐渐发展并引入的,它们使得`makefile`更加强大和灵活,能更好地适应各种项目构建的需求。在编写和理解`makefile`时,了解这些特性可以帮助我们更有效地管理和自动化构建过程。