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

时间:2009-07-23 01:38:23

标签: makefile macros gnu

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

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

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

1 个答案:

答案 0 :(得分: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

希望这有帮助,

Eric Melski