Makefile中的函数使用
创始人
2025-05-30 21:10:46

在Makefile中,是支持函数使用的,Makefile中的函数包括make解释器自身预定义的函数,同时也支持我们自己定义函数。

1. 自定义函数

在Makefile中, 通过define关键字来实现函数的自定义,并以endef关键字结束,自定义函数使用预定义函数call调用,后边跟自定义函数名及参数。
自定义函数,不是真正的函数,本质上是多行命令,只是放在目标外部,通过命令进行调用。

(1)自定义函数格式

define 函数名cmd1cmd2... cmdn
endef

(2)调用格式

$(call 函数名, 参数1, 参数2 ...)
root@xingwei-virtual-machine:/home/xingwei/makefile/05# cat Makefile 
.PHONY: testdefine fun1@echo "function name is:> ${0}"
endefdefine fun2@echo "function name is:> ${0}"@echo "param1 is:> $(1)"@echo "param2 is:> $(2)"
endeff1 := $(call fun1)
f2 := $(call fun2, Hello, 1111)test:@echo $(f1)@echo $(f2)$(call fun2, world, 2222)

在这里插入图片描述

2. 内置函数

Make的函数提供了处理文件名,变量和命令的函数,可以在需要的地方调用函数来处理指定的参数,函数再调用的地方被替换为处理结果。
(1)内置函数的调用格式

$(函数名 arg1, arg2...)

(2)为什么自定义函数和预定义函数的调用形式完成不同?
  本质上,Makefile不支持真正意义上的自定义函数,自定义函数本质上是多行变量,预定义的call函数在调用时将参数传递给多行变量,自定义函数时call函数的参数,并在call中被执行。

以下只是少许内置函数,使用起来非常简单。

$(abspath names…)
$(wildcard pattern)
$(addprefix prefix,names…)
$(addsuffix suffix,names…)

root@xingwei-virtual-machine:/home/xingwei/makefile/05# cat Makefile 
.PHONY: testtest:@echo $(abspath ./)@echo $(wildcard *.c)

在这里插入图片描述

关于使用,此处不再赘述,可参考以下文章:
(1)https://m.rookiew.com/mirrors/6947.html
(2)https://zhuanlan.zhihu.com/p/362917196?utm_id=0
(3)https://blog.csdn.net/oqqHuTu12345678/article/details/125617988

更多基于make的内置函数,请参考官方内置函数。

相关内容

热门资讯

守护最北的日出星辰 转自:成都日报锦观江水深沉 江湾静谧守护最北的日出星辰 游客在漠河“神州北极”碑前打卡拍照,碑...
万华化学福建码头公司增资至10... 经济观察网 天眼查App显示,12月16日,万华化学(福建)码头有限公司发生工商变更,注册资本由4亿...
文旅“融”光焕发 共绘“诗与... ●兵团日报全媒体记者 姜蒙 通讯员 张培丽 胥强 仲冬时节,寒意渐浓,五师八十三团十连...
情暖援疆路 医心护健康 ●蔡伟 “医生,我的胃老是不舒服,吃了东西总不消化。”12月16日,在四师总医院可克达拉市院区...
以行践诺 服务暖心 ………… “我们将以更大力度推动‘万企兴万村’行动走深走实,团结引领兵团广大民营企业发挥优势,...