模式规则
普通模式规则
%.o: %.c
# commands to execute (built-in):
>---$(COMPILE.c) $(OUTPUT_OPTION) $<
$(OBJDIR)/%.o : %.c
>---$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
模式规则类似于普通规则,只是在模式规则中,目标文件是一个带有模式字符“%”的文件,使用模式来匹配目标文件。在目标文件名中“%”匹配的部分称为 “茎”。使用模式规则时,目标文件匹配之后得到“茎”,依赖根据“茎”产生对应的依赖文件,这个依赖文件必须是存在的或者可被创建的。
静态规则
<targets ...>: <target-pattern>: <prereq-patterns ...>
<commands>
一个规则中可以有多个目标,规则所定义的命令对所有的目标有效。
静态模式规则只能用在规则中明确指出的那些文件的重建过程中。不能用在除此之外的任何文件的重建过程中,并且它对指定的每一个目标来说是唯一的。如果一个目标存在于两个规则,并且这两个规则都定义了命令, make 执行时就会提示错误。 非静态模式规则可被用在任何和它相匹配的目标上,当一个目标文件同时符合多个目标模式时,make将会把第一个目标匹配的模式规则作为重建它的规则。