make内置函数call

在make中,内置函数call用来扩展变量或者宏,它的语法如下:

$(call macro-name[, param1 ...])

call会扩展它的第一个参数并把其余参数依次替换到出现$1、$2 ......的地方,macro-name 可以是任何宏或变量的名称。macro-name之后是宏的参数,并以逗号为分隔符。
call的第一个参数是一个非扩展式变量名称,即它并非以一个美元符号开始。call的参数检查机制非常简单,你可以为call指定任意多个参数。如果一个宏引用了一个参数$n,但是调用它的call实例并未指定相应的参数,那么该变量就会变成空值。如果call实例所指定的参数比宏的$n引用还多,那么在宏中并不会扩展额外的参数。
使用示例:
Makefile:

tbl = ./syscall_32.tbl
systbl = ./systbl.sh

changed = true
if_changed = $(if $changed, $(call $(1)) $< $@, @:)

a.h:$(tbl) $(systbl)
    $(call if_changed, systbl)

systbl.sh:

#!/bin/sh

in="$1"
out="$2"

echo "begin to generate $out from $in ..."

运行结果:

$ make
./systbl.sh syscall_32.tbl a.h
begin to generate a.h from syscall_32.tbl ...



 

猜你喜欢

转载自blog.csdn.net/choumin/article/details/111514017