From: http://www.cnblogs.com/MyEyes/archive/2012/01/12/2320589.html
自己学习脚印,不喜勿喷,谢谢 ~
Makefile中函数定义:
external/genext2fs/Config.mk
# $(1): src directory # $(2): output file # $(3): label (if any) # $(4): if true, add journal define build-userimage-ext2-target @mkdir -p $(dir $(2)) //不显示命令本身,只显示执行结果 $(hide) num_blocks=`du -sk $(1) | tail -n1 | awk '{print $$1;}'`;\ // tail -n1 的意思是读取最后一行的输出 if [ $$num_blocks -lt 20480 ]; then extra_blocks=3072; \ else extra_blocks=20480; fi ; \ num_blocks=`expr $$num_blocks + $$extra_blocks` ; \ // expr 是四则运算的命令 num_inodes=`find $(1) | wc -l` ; num_inodes=`expr $$num_inodes + 500`; \ if [ -n "$(filter system.img userdata.img,$(notdir $(2)))" ]; then android_image="-a"; else android_image="-U"; fi; \ $(MKEXT2IMG) $$android_image -d $(1) -b $$num_blocks -N $$num_inodes -m 0 $(2) $(if $(strip $(3)),\ $(hide) $(TUNE2FS) -L $(strip $(3)) $(2)) $(if $(strip $(4)),\ $(hide) $(TUNE2FS) -j $(2)) $(TUNE2FS) -C 1 $(2) $(E2FSCK) -fy $(2) ; [ $$? -lt 4 ] endef
函数调用:
include external/genext2fs/Config.mk ifeq ($(TARGET_SYSTEMIMAGES_USE_EXT3),true) ## generate an ext3 image # $(1): output file define build-radioimage-target @echo "Target radio fs image: $(1)" $(call build-userimage-ext2-target,$(1),$(2),radio,journal) endef else # TARGET_SYSTEMIMAGES_USE_EXT3 != true $(error Radio does not support yaffs!) endif
第一行需要将函数定义的makefile include进来,让其可以调用到其中的方法。
在具体调用的方法使用call,函数后面可以跟参数,该参数对应函数原型中的$(1),$(2)等等