Makefile自動變量

所謂自動化變量,就是這種變量會把模式中所定義的一系列文件自動挨個取出,直至所有符合模式的文件
都取完。自動化變量只應出現在規則的命令中。
下面是所有的自動化變量及其說明:
 
$@
表示規則中的目標文件。如果目標中有函數庫文件,則代表目標中的函數庫文件。

$%
當目標中有函數庫文件時使用,表示目標中的非函數庫成員。例如,如果一個目標是"foo.a(bar.o)",那麼
,"$%"就是"bar.o","$@"就是"foo.a"。如果目標中沒有函數庫文件,其值爲空。

$<
依賴目標中的第一個目標名字。如果依賴目標是以模式(即"%")定義的,那麼"$<"將是符合模式的一系
列的文件集。注意,其是一個一個取出來的。

$?
所有比目標新的依賴目標的集合,以空格分隔。

$^
所有依賴目標的集合,以空格分隔。如果在依賴目標中有重複的,這個變量會去除重複的依賴目標,只保
留一份。

$+
這個變量很像"$^",也是所有依賴目標的集合,只是它不去除重。

$*
這個變量表示目標模式中"%"及其之前的部分。如果目標是"dir/a.foo.b",且目標的模式是"a.%.b",那麼
,"$*"的值就是"dir/a.foo"。如果目標中沒有模式的定義,那麼"$*"就不能被推導出。但是,如果目標文件
的後綴是make所識別的,那麼"$*"就是除了後綴的那一部分。例如:如果目標是"foo.c",因爲".c"是make
能識別的後綴名,所以,"$*"的值就是"foo"。如果目標中的後綴是make所不能識別的,那麼"$*"就是空值
。這個特性是GNU make的,很有可能不兼容於其它版本的make,所以,應該儘量避免使用"$*"。
發佈了8 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章