模式规则中的目录

如果目标模式不包含斜杠,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 规则,因为它匹配较短的词干。