模式规则中的目录
如果目标模式不包含斜杠,make 将在匹配之前从其尝试构建的目标中删除目录部分。然后该目录将放在词干前面。当使用 stem 来构建目标名称和先决条件时,将从中删除目录部分,替换 stem 替换%
,最后将目录放在字符串前面。例如:
foo%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
将匹配 lib/foobar.o
,用:
- 干(
$*
):lib/bar
- 目标名称(
$@
):lib/foobar.o
- 先决条件(
$<
,$^
):lib/foobar.c
在此示例中,lib/foo%.o
规则优先于 foo%.o
规则,因为它匹配较短的词干。