make 程序的内部规则
make 命令的内部规则位于看起来与描述文件相似的文件中。
指定了 -r 标记时,make 命令不使用内部规则文件。 您必须提供规则在您的描述文件中创建文件。 内部规则文件包含 make 命令所理解的文件名后缀 (例如 .o 或 .a) 的列表,以及通知 make 命令如何从具有另一后缀的文件创建具有一个后缀的文件的规则。 如果您不更改列表,那么 make 命令理解以下后缀:
| 后缀 | 描述 |
|---|---|
| .a | 归档库 |
| 。 | C++ 源文件 |
| 。C\ ~ | 包含 C++ 源文件的源代码控制系统 (SCCS) 文件 |
| .c | C 源文件 |
| .c ~ | 包含 C 源文件的 SCCS 文件 |
| .f | FORTRAN 源文件 |
| .f ~ | 包含 FORTRAN 源文件的 SCCS 文件 |
| .h | C 语言头文件。 |
| .h ~ | 包含 C 语言头文件的 SCCS 文件 |
| .l | lex 源语法 |
| .l ~ | 包含 lex 源语法的 SCCS 文件。 |
| .o | 对象文件。 |
| .s | 汇编程序源文件。 |
| .s ~ | 包含汇编程序源文件的 SCCS 文件。 |
| (.sh) | shell 命令源文件。 |
| .sh~ | 包含 shell 命令源文件的 SCCS 文件。 |
| .y | yacc-c 源语法。 |
| .y ~ | 包含 yacc-c 源语法的 SCCS 文件。 |
后缀列表与描述文件中的相关性列表相似,且跟在 .SUFFIXES 的伪目标名后面。 因为 make 命令按照从左到右的顺序查看后缀列表,所以条目的顺序十分重要。
make 命令使用列表中满足下述要求的第一个条目:
- 条目与当前目标和相关性文件的输入和输出后缀需求匹配。
- 条目有指定给它的规则。
make 命令从规则定义的文件的两个后缀创建规则名。 例如,将 .c 文件转换为 .o 文件的规则名为 .c.o。
要将更多后缀添加到列表中,请为描述文件中 .SUFFIXES 的伪目标名添加条目。 对于在描述文件中的目标名后面不带任何后缀的 .SUFFIXES 行,make 命令将擦除当前列表。 要更改列表中名称的顺序,请擦除当前列表并将新的值集合赋给 .SUFFIXES。