0
build_debug:=dltvr
define debug
$$(findstring $(2),$$(if $$(DEBUG_SCOPE_DIR),$$(if $$(filter $$(DEBUG_SCOPE_DIR)%,$(1)),$(build_debug)),$(build_debug)))
endef   
define warn
$$(if $(call debug,$(1),$(2)),$$(warning $(3)))
endef   
$(call warn,jianxi,d,D jianxi)

私のオプションで$(call warn,...)は、に展開されます

$(if $(findstring d,$(if $(DEBUG_SCOPE_DIR),$(if $(filter $(DEBUG_SCOPE_DIR)%,jianxi),dltvr),dltvr)),$(warning D jianxi))

そして出力しますMakefile:13: D jianxi

4

1 に答える 1

1

あなたは正しいです; $(call warn,...)に展開され$(if $(findstring ...)...)ます。しかし、これ以上拡大することはありません。

「$」記号をエスケープしすぎています。これを試して:

define warn
$(if $(call debug,$(1),$(2)),$(warning $(3)))
endef
于 2013-11-01T11:41:37.813 に答える