Makefile call 函数
通过前面的学习我们已经知道:如果想在Makefile中调用GNU make的内置函数,我们使用下面的形式调用:
$(function arguments)
${function arguments}
如果想调用用户自定义的函数,则只能使用call函数来间接调用了:
PHONY: all
define func
@echo "pram1 = $(0)"
@echo "pram2 = $(1)"
endef
all:
$(call func, hello zhaixue.cc)
我们给函数传递的参数,在函数内部可以使用$(0)、$(1)…直接使用。call函数是唯一一个可以用来创建新的参数化的函数。call函数不仅可以用来调用一个用户自定义函数并传参,还可以向一个表达式传参:
$(call <expression>,<parm1>,<parm2>,<parm3>...)
当 make 执行这个函数时,expression表达式中的参数变量,如$(1),$(2),$(3)等,会被参数parm1,parm2,parm3依次取代。而expression的返回值就是 call 函数的返回
值。
.PHONY: all
param = $(1) $(2)
reverse_param = $(2) $(1)
str1 = $(call param, hello, zhaixue.cc)
str2 = $(call reverse_param, hello, zhaixue.cc)
all:
@echo "str1 = $(str1)"
@echo "str2 = $(str2)"
执行make命令,运行结果为:
# make
str1 = hello zhaixue.cc
str2 = zhaixue.cc hello
《Makefile工程实践》视频教程,一线开发工程师独家录制,网上首家讲解Makefile的实战课程。从零开始,教你一步一步编写一个工程项目的Makefile,支持使用第三方静态库、动态库,支持指定模块或目录编译生成静态库、动态库,赠送企业级的Makefile模板,学完即可拿来使用,投入项目开发实战,具备独立开展项目开发和管理的能力。详情请点击淘宝链接:Linux三剑客