版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengfei240/article/details/76262389
在使用Makefile时,有时需要实现如下的逻辑:
ifdef VAR1 || VAR2 || VAR3
或
ifdef VAR1 && VAR2 && VAR3
但ifdef
只支持单一的变量操作,在网上搜索了一下,有一个非常好的解决方案,总结如下。
||操作
ifdef_any_of = $(filter-out undefined,$(foreach v,$(1),$(origin $(v))))
ifneq ($(call ifdef_any_of,VAR1 VAR2),)
result=define
else
result=undefine
endif
all:
@echo $(result)
&&操作
ifndef_any_of = $(filter undefined,$(foreach v,$(1),$(origin $(v))))
ifeq ($(call ifndef_any_of,VAR1 VAR2),)
result=define
else
result=undefine
endif
all:
@echo $(result)