Makefile中的eval函数和call函数到底怎么用?

1,call函数的定义是什么?

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

        作用:当make执行时 expression 这个函数时,参数中的变量,如 $(1),$(2),$(3)等。会被参数<parm1>, <parm2>, <parm3>所代替。

例如:

reverser = $(1) $(2)

foo = $(call reverser,a,b)

#此时,foo的值就是 "a b".当然,参数的次序是可以自定义的,不一定是顺序的 如

reverser = $(2) $(1)

foo = $(call reverser,a,b)

#此时, foo 的值就是 "b a"。

2,eval函数的作用

        查到最多的都是一句话可以概括 : 可以在Makefile中构建一个可变的规则结构关系。

上实例:

define EV

test : test.c

    gcc -o test test.c

endef

$(eval $(call EV))

最终的编译规则会执行 gcc -o test test.c

看第二个(结合 call的定义):

T := test

S := test.c

define EV

$(1) : $(2)

    gcc -o $(1) $(2)

endef

$(eval $(call EV,$(T),$(S)))

最终执行结果同上个例子一样 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值