模式規則中的目錄

如果目標模式不包含斜槓,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 規則,因為它匹配較短的詞幹。