makefile--函数定义 函数调用

2018-10-04  本文已影响0人  qiuzy_666

函数定义与调用


1. makefile中支持函数的概念

define func1
    @echo "my name is $(0)"
endef
define func2
    @echo "my name is $(0)"
    @echo "param1 => $(1)"
    @echo "param2 => $(2)"
endef

示例1--函数调用

test :
    $(call func1)
    $(call func2, value1)
9-1.PNG

2. 深入理解自定义函数

define func1
    @echo "my name is $(0)"
endef

var1 := $(call func1)
var11 := $(func1)

test :
    @echo "var1 => $(var1)"
    @echo "var11 => $(var11)"
9-2.PNG

3. make解释器中的预定义函数

预定义函数的调用方法:

var := $(func_name arg1,arg2,...)

说明:
var表示返回值,func_name表示函数名,arg1,arg2表示函数实参

示例3--预定义函数调用

var := $(abspath ./)

test :
   @echo "var => $(var)"
9-3.PNG

自定义函数和预定义函数的本质区别:

.PHONY : test

define func1
    @echo "my name is $(0)"
endef

func2 := @echo "my name is $(0)"

test :
    $(call func1)
    $(call func2)
9-4.PNG

示例5--call调用多行变量

.PHONY : test

define func1
    @echo "my name is $(0)"
endef

define func2 
    @echo "my name is $(0)"
endef

test :
    $(call func1)
    $(call func2)
9-5.PNG

示例6--自定义函数与预定义函数区别

.PHONY : test

define func1
    @echo "my name is $(0)"
endef

define func2 
    @echo "my name is $(0)"
endef

var1 := $(call func1)
var2 := $(call func2)
var3 := $(abspath ./)
var4 := $(abspath test.app)

test :
    @echo "var1 => $(var1)"
    @echo "var2 => $(var2)"
    @echo "var3 => $(var3)"
    @echo "var4 => $(var4)"
9-6.PNG

小结

上一篇 下一篇

猜你喜欢

热点阅读