makefile 语法_makefile %_nis makefile 语法(27)

电脑杂谈  发布时间:2017-04-11 03:08:47  来源:网络整理

注意,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>会是整个函数的返回,此时如果<else-part>没有被定义,那么,整个函数返回空字串。

所以,<then-part>和<else-part>只会有一个被计算。

六、call函数

call函数是唯一一个可以用来创建新的参数化的函数。你可以写一个非常复杂的表达式,这个表达式中,你可以定义许多参数,然后你可以用call函数来向这个表达式传递参数。其语法是:

$(call <expression>,<parm1>,<parm2>,<parm3>...)

当make执行这个函数时,<expression>参数中的变量,如$(1),$(2),$(3)等,会被参数<parm1>,<parm2>,<parm3>依次取代。而<expression>的返回就是call函数的返回。例如:

reverse = $(1) $(2)

foo = $(call reverse,a,b)

那么,foo的就是“a b”。当然,参数的次序是可以自定义的,不一定是顺序的,如:

reverse = $(2) $(1)

foo = $(call reverse,a,b)

此时的foo的就是“b a”。

七、origin函数

origin函数不像其它的函数,他并不操作变量的,他只是告诉你你的这个变量是哪里来的?其语法是:

$(origin <variable> )

注意,<variable>是变量的名字,不应该是引用。所以你最好不要在<variable>中使用“$”字符。Origin函数会以其返回来告诉你这个变量的“出生情况”,下面,是origin函数的返回:

“undefined”

如果<variable>从来没有定义过,origin函数返回这个“undefined”。

“default”

如果<variable>是一个默认的定义,比如“CC”这个变量,这种变量我们将在后面讲述。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40629-27.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...