GNU Make 特点与历史沿革:SSE4.2与早期版本元素

需积分: 4 65 下载量 145 浏览量 更新于2024-08-09 收藏 4.21MB PDF 举报
本文档详细介绍了GNU make命令集中的各种特性及其历史渊源,主要分为两个部分:源自其他版本的特点和GNU make自身的特色。 1. **源自其他版本的特点**: - **模式规则与“%”字符**: "%"在多个版本的make中被广泛使用作为模式字符,但确切的起源未明,可参考9.5节的模式规则。 - **规则链和隐含中间文件**: Stu Feldman版本的make引入了规则链和隐含文件的概念,用于AT&T Unix的研究,AT&T贝尔实验室的Andrew Hume在mk程序中进一步发展了这一特性(参考9.4节)。 - **自动化变量`$^`**: 该变量用于包含所有依赖文件列表,虽然不是GNU原创,但来源不明,详情在9.5.3节。 - **"what if"选项**: GNU make的`-W`选项(即"what if"选项)据说由Andrew Hume在mk中首次提出,参阅8.7节。 - **并发执行支持**: 并发执行功能在其他版本的make中存在,但System V和BSD早期版本并未实现,参阅4.3节。 - **模式替换引用和追加操作**: 模式替换引用源自SunOS 4,而`+=`语法也来源于SunOS 4,具体谁先实现难以确定,5.3和5.6节有更多细节。 - **特定语法和操作**: 如命令行的`+`字符、静态库成员列表语法等,都源于不同的操作系统版本,如SunOS 4,参阅相应章节。 2. **GNU make自身的特点**: - **版本信息和帮助选项**: `make -v`和`make --version`用于显示版本信息,`make -h`或`make --help`提供命令行选项列表。 - **变量和递归调用**: GNU make支持直接展开式变量,5.2节有详细介绍;变量`MAKE`允许在递归调用中传递命令行选项,4.6节对此有所阐述。 - **其他特性**: 如清除过程文件、变量模式替换、`-include`指令(包括多个makefile文件)等,体现了GNU make的灵活性和增强功能。 综上,本文文档提供了深入理解GNU make命令集的实用知识,从其与其他版本的继承和差异,到自身特有的强大功能和使用技巧,为读者构建和管理复杂的Makefile提供了详尽的指南。