Makefile中foreach使用


轉自:https://blog.csdn.net/u012554768/article/details/46043193

 

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函數當中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM