网站会员模板,西安网站有哪些,更新目录wordpress,重庆新闻app下载目录
一、foreach 函数
二、if 函数
三、call 函数 一、foreach 函数 foreach 函数和别的函数非常的不一样。因为这个函数是用来做循环用的#xff0c;Makefile 中的 foreach 函数几乎是仿照于 Unix 标准 Shell#xff08;/bin/sh#xff09;中的 for 语句#xff0c;或…目录
一、foreach 函数
二、if 函数
三、call 函数 一、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 函数当中。
二、if 函数 if 函数很像 GNU 的 make 所支持的条件语句——ifeq参见前面所述的章节if 函数 的语法是
$(if condition,then-part)
或是
$(if condition,then-part,else-part) 可见if 函数可以包含“else”部分或是不含。即 if 函数的参数可以是两个也可 以是三个。condition参数是 if 的表达式如果其返回的为非空字符串那么这个表达式 就相当于返回真于是then-part会被计算否则else-part会被计算。 而 if 函数的返回值是如果(condition)为真非空字符串那个then-part会是整 个函数的返回值如果condition为假空字符串那么else-part会是整个函数的返 回值此时如果没有被定义那么整个函数返回空字串。 所以then-part和else-part只会有一个被计算。
三、call 函数 call 函数是唯一一个可以用来创建新的参数化的函数。你可以写一个非常复杂的表达 式这个表达式中你可以定义许多参数然后你可以用 call 函数来向这个表达式传递参 数。其语法是
$(call expression,pram1,pram2,pram3...) 当 make 执行这个函数时参数中的变量如$(1)$(2)$(3)等会被 参数依次取代。而的返回值就是 call 函数的返回 值。例如
reverse $(1) $(2)
foo $(call reverse,a,b) 那么foo 的值就是“a b”。当然参数的次序是可以自定义的不一定是顺序的
如
reverse $(2) $(1)
foo $(call reverse,a,b)
此时的 foo 的值就是“b a”。