10

Makefile で GREP を呼び出す 2 つの方法に違いはありますか? どちらかを使用する必要がある理由はありますか? どちらも同じ結果になるようです。

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 に答える