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
答案 0 :(得分:1)
你是对的; $(call warn,...)
将扩展为$(if $(findstring ...)...)
。但它会不进一步扩展。
你已经将'$'符号转移得太远了。试试这个:
define warn
$(if $(call debug,$(1),$(2)),$(warning $(3)))
endef