Makefile的使用筆記

Makefile中獲取當前執行的Makefile所在路徑

根據gnu make定義,gnu make 會自動將所有讀取的makefile路徑都會加入到MAKEFILE_LIST變量中,而且是按照讀取的先後順序添加。
所以可以通過$(abspath $(lastword $(MAKEFILE_LIST)))返回當前正在被執行的Makefile的絕對路徑。
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))  #獲取當前正在執行的makefile的絕對路徑
cur_mkfile_path := $(patsubst %Makefile, %, $(mkfile_path))     #獲取當前正在執行的makefile的絕對目錄

注: makefile之patsubst函數

格式:$(patsubst pattern,replacement,text)

名稱:模式字符串替換函數——patsubst。
功能:查找text中的單詞(單詞以“空格”、“Tab”或“回車”“換行”分隔)是否符合模式pattern,如果匹配的話,則以replacement替換。
   這裏,pattern可以包括通配符“%”,表示任意長度的字串。如果replacement中也包含“%”,那麼,replacement中的這個“%”將是pattern中的那個“%”所代表的字串。(可以用“\”來轉義,以“%”來表示真實含義的“%”字符)
返回:函數返回被替換過後的字符串。
示例:
$(patsubst %.c,%.o, a.c b.c)
把字串“a.c b.c”符合模式[%.c]的單詞替換成[%.o],返回結果是“a.o b.o” 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章