Makefile中的函数使用
创始人
2025-05-30 20:03:57

在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的内置函数,请参考官方内置函数。

相关内容

热门资讯

玩家突测教程!“白金岛麻将圈竟... 亲,白金岛麻将圈这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好...
玩家推荐“陕麻圈.开挂器”其实... 有 亲,根据资深记者爆料陕麻圈是可以开挂的,确实有挂(咨询软件无需打开直...
玩家突测教程!“边锋陕西麻将竟... 您好:边锋陕西麻将这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别...
黑科技辅助!悦扑克软件透明功能... 您好:悦扑克这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总...
玩家突测教程!“边锋老友麻将竟... 您好:边锋老友麻将这款游戏可以开挂,确实是有挂的,需要了解添加微信【29290261很多玩家在这款游...