自動變數

在單個規則的上下文中,Make 自動定義了許多特殊變數。這些變數可以為 makefile 中的每個規則賦予不同的值,旨在使編寫規則更簡單。這些變數只能用於規則的配方部分。

變數 描述
$@ 規則目標的檔名
$% 目標成員的名稱,如果規則的目標是存檔
$< 第一個先決條件的檔名
$^ 所有先決條件的清單
$? 列出比目標更新的所有先決條件
$* 隱含或模式規則的詞幹

以下示例使用自動變數生成通用規則。這指示如何使用相同的名稱從 .c 檔案構造 .o 檔案。由於我們不知道受影響檔案的具體名稱,因此我們使用 $@ 作為輸出檔名稱的佔位符,將 $^用作先決條件列表的佔位符(在本例中為輸入檔案列表)。

%.o: %.c
    cc -Wall $^ -c $@