close

 

foreach 函數

foreach函數和別的函數非常的不一樣。因為這個函數是用來做循環用的,Makefile中的foreach函數幾乎是仿照于Unix標準 Shell(/bin/sh)中的for語句,或是C-Shell(/bin/csh)中的foreach語句而構建的。它的語法是:

$(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」。

注意,foreach中的<var>參數是一個臨時的局部變數,foreach函數執行完后,參數<var>的變數將不在作用,其作用域只在foreach函數當中。 

arrow
arrow
    文章標籤
    Makefile
    全站熱搜

    tienhaha 發表在 痞客邦 留言(0) 人氣()