##$@–表示所有的目標文件。
%表示規則中的目標成員名。例如,如果一個目標是”foo.a(bar.o)”,那麼,” @”就是”foo.a”。如果目標不是函數庫文件(Unix下是[.a],Windows下是[.lib]),其值爲空。
<−−依賴目標中的第一個目標名字。如果依賴目標是以模式(即" <”將是符合模式的一系列的文件集。注意,其是一個一個取出來的。
$?–所有同目標相比更新的依賴目標的集合。以空格分隔。
$^–所有的依賴目標的集合。以空格分隔。如果在依賴目標中有多個重複的,那個這個變量會去除重複的依賴目標,只保留一份。
+−−同 ^ , 區別是 如果目標文件中有重複的,$+ 不會排重。
∗−−這個變量表示目標模式中"“的值就是”dir /a.foo”。這個變量對於構造有關聯的文件名是比較有效。如果目標中沒有模式的定義,那麼”∗"也就不能被推導出,但是,如果目標文件的後綴是make所識別的,那麼"“就是除了後綴的那一部分。例如:如果目標是”foo.c”,因爲”.c”是make所能識別的後綴名,所以,”∗"的值就是"foo"。這個特性是GNUmake的,很有可能不兼容於其它版本的make,所以,我們應該盡量避免使用"“,除非是在隱含規則或是靜態模式 中。如果目標中的後綴是make所不能識別的,那麼”$“就是空值。
上面七個自動化變量可以加上D(Directory)或F(FileName)來分別表示路徑和文件名部分。例如,(@F)表示" @”的文件部分,如 果”@"值是"dir/foo.o",那麼" (@F)”就是”foo.o”,”(@F)"相當於函數" (notdir @)"; (@D)表示”@"的目錄部分(不以斜槓做爲結尾),如果" @”值是”dir/foo.o”,那麼”(@D)"就是"dir",而如果" @”中沒有包含斜槓的話,其值就是”.”(當前目錄)。