例子一
示例Makefile
define do_func
@echo "$1_";echo "$2_";echo "$3_";echo --------
endef
.PHONY: ONE TWO THRE all
all: ONE TWO THRE
ONE TWO THRE:
$(call do_func,$@)
我本以为的运行结果:
$ make all
ONE_TWO_THRE_--------
实际运行结果:
$ make all
ONE_
_
_
--------
TWO_
_
_
--------
THRE_
_
_
--------
所以当 $@ 是多个目标时,使用 $@ 是单独分别展开的。
例子二
示例Makefile2
.PHONY: ONE TWO THRE all
all: ONE TWO THRE
ONE TWO THRE:
@echo "$@---"
运行结果
$ make all
ONE---
TWO---
THRE---