10
GREP在我的Makefile中调用两种方式有什么区别吗?任何理由我应该使用一个或另一个?两者似乎都产生了相同的结果。如何调用使用define创建的GNU make宏?
define GREP
$(word 3,$(shell echo "#define FOO 0xfff00100"))
endef
all:
@echo $(GREP)
@echo $(call GREP)
GREP在我的Makefile中调用两种方式有什么区别吗?任何理由我应该使用一个或另一个?两者似乎都产生了相同的结果。如何调用使用define创建的GNU make宏?
define GREP
$(word 3,$(shell echo "#define FOO 0xfff00100"))
endef
all:
@echo $(GREP)
@echo $(call GREP)
您使用它的方式没有区别。但是,如果你的GREP宏是一个带参数的函数,那么你必须使用$(call)来传递参数。例如:
define GREP
$(shell grep $1 $2)
endef
FOO:=$(call GREP,abc,words.txt)
这导致$1
与 “ABC” 来代替,并$2
用 “words.txt”。
查看更多在GNU使这里用户定义函数手册:http://www.gnu.org/software/make/manual/make.html#Call-Function
希望这有助于
埃里克Melski