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函数当中。
foreach 函数和别的函数非常的不一样。因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell (/bin/sh)中的for语句,或是C-Shell(/bin/csh)中的foreach语句而构建的。它的语法是: $(foreach ;,;,;)这个函数的意思是,把参数;中的单词逐一取出放到参数;所指定的变量中,然后再执行;
转:http://www.cppblog.com/ivenher/articles/22107.html
http://blog.sina.com.cn/s/blog_5210e67e010092eu.html
makefile详解
函数
foreach
foreach
函数
foreach
函数
和别的
函数
非常的不一样。因为这个
函数
是用来做循环用的,Makefile中的for
Makefile 自定义
函数
和
foreach
的使用。
最近在做项目时,用到了一些开源的组件,这些组件中需要第三方库,每个版本对应的第三方库可能不一样,所以使用源码编译安装时,第一次需要去下载这些包,但是下载比较慢,需要改造Makefile。
Makefile 定义
函数
来实现这个改造
函数
格式
define EXTERNAL_TAR
endef
deps...
foreach
函数
和别的
函数
非常的不一样。因为这个
函数
是用来做循环用的,Makefile中的
foreach
函数
几乎是仿照于Unix标准
Shell
(/bin/sh)中的for语句,或是C-
Shell
(/bin/csh)中的
foreach
语句而构建的。它的语法是:
$(
foreach
<var>,<list>,<text> )
这个
函数
的意思是,把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再执行<text&g...