makefile函数

一、foreach和call

test_var0 = welcome come to Shenzhen!
test_var1 = "* start" $(1) $(2) "end!"

result0 = $(call test_var1, "gzsh0","gzsh1")
result1 = $(foreach i,$(test_var0),$(i)_gzsh)
result2 = $(foreach i,$(test_var0), $(call test_var1,$i,".gzsh"))

all:
        @echo "foreach function test."
        @echo $(result0)
        @echo $(result1)
        @echo $(result2)
结果:
foreach function test.
* start gzsh0 gzsh1 end!
welcome_gzsh come_gzsh to_gzsh Shenzhen!_gzsh
* start welcome .gzsh end! * start come .gzsh end! * start to .gzsh end! * start Shenzhen! .gzsh end!
注意:

foreach函数每次循环都会得到一个字符串,这个函数的返回值是所有循环结果得到的字符串的总和。

 二、if函数
result = $(if "hello world!", "Makefile if function test.")

all:
        @echo $(result)

结果:

Makefile if function test.

if函数的格式

$(if condition, [then part], [else part])

如果condition不为空字符串,执行else part,否则执行else part。else part可以没有。

三、notdir函数

var0 = $(notdir $(abspath $(CURDIR)/)) 

var1 = $(notdir $(abspath $(CURDIR)/swdefs.mk)) 

all:

        @echo "var0: $(var0)"

        @echo "var1: $(var1)"

make结果:

var0: soc

var1: swdefs.mk

soc是当前的工作目录。

notdir是取绝对目录最后一个目录或者文件名字作为返回值。如果这个函数操作的对象是一个目录的路径,不管这个目录名后有没有/,这个函数都是返回这个目录的名字作为返回值。

 四、abspath函数
这个函数会将一个路径中含有的连续/只保留一个,并且会将../、./相对路径的部分解释为实际的路径,结果不会再含有相对路径../、./的部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值