2013-11-01 130 views
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) 

在我optinion,$(call warn,...)將擴大到Makefile的功能擴展

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

,並會輸出Makefile:13: D jianxi

回答

1

你是正確的; $(call warn,...)將擴大到$(if $(findstring ...)...)。但它會而不是進一步擴大。

您已經將'$'符號轉義得太遠了。試試這個:

define warn 
$(if $(call debug,$(1),$(2)),$(warning $(3))) 
endef