如何调用使用define创建的GNU make宏?

10

在我的Makefile中,使用GREP的这两种方式有什么区别吗?有没有理由选择其中一种而不是另一种?这两种方式都似乎产生相同的结果。

define GREP
$(word 3,$(shell echo "#define  FOO     0xfff00100"))
endef

all:
        @echo $(GREP)
        @echo $(call GREP)
1个回答

16

从您目前的使用方式来看,没有什么不同。但是,如果您的GREP宏是一个带有参数的函数,那么您将需要使用$(call)来将参数传递给它。例如:

define GREP
$(shell grep $1 $2)
endef

FOO:=$(call GREP,abc,words.txt)

这会使得$1被替换为"abc",$2被替换为"words.txt"。

在GNU make手册中查看更多关于用户自定义函数的内容,请参考:http://www.gnu.org/software/make/manual/make.html#Call-Function


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接