Makefile中幾個重要的函數

1、foreach:

       foreach是用來做循環用的,類似於for 語句,語法是:$(foreach <var>,<list>,<text>)
       意思:把參數<list>中的單詞逐一取出放到參數<var>所指定的變量中,然後再執行<text>所包含的表達式。每一次<text>會返回一個字符串,循環過程中,<text>的所返回的每個字符串會以空格分隔,最後當整個循環結束時,<text>所返回的每個字符串所組成的整個字符串(以空格分隔)將會是foreach函數的返回值。所以,<var>最好是一個變量名,<list>可以是一個表達式,而<text>中一般會使用<var>這個參數來依次枚舉<list>中的單詞。

例:
names := a b c d
files := $(foreach n,$(names),$(n).o)
      $(name)中的單詞會被挨個取出,並存到變量“n”中,“$(n).o”每次根據“$(n)”計算出一個值,這些值以空格分隔,最後作爲foreach函數的返回,所以,$(files)的值是“a.o b.o c.o d.o”。


2、wildcard:

      使用wildcard得到指定目錄下所有的C語言源程序文件名的方法,不用手工一個一個指定需要編譯的.c文件了,方法如下:
SRC = $(wildcard *.c)
      等於指定編譯當前目錄下所有.c文件,如果還有子目錄,比如子目錄爲inc,則再增加一個wildcard函數:
SRC = $(wildcard *.c) $(wildcard inc/*.c)
      也可以指定彙編源程序:
ASRC = $(wildcard *.S)


3、addprefix:    

     功能:$(addprefix <prefix>,<names...> )   ,加前綴函數,把前綴<prefix>加到<names>中的每個單詞前。
     返回:返回加過前綴的文件名序列。
     例:$(addprefix src/,foo bar)返回值是“src/foo src/bar”。


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