10

在我的 Makefile 中调用 GREP 的两种方式有什么区别吗?有什么理由我应该使用其中一个吗?两者似乎产生相同的结果。

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

all:
        @echo $(GREP)
        @echo $(call GREP)
4

1 回答 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

于 2009-07-23T02:40:13.030 回答