Makefile-如何检查变量是否为非空且是否为两个值之一

Makefile-如何检查变量是否为非空且是否为两个值之一,makefile,gnu-make,Makefile,Gnu Make,我试图检查我的环境变量是否为空,是否为开发或生产 ENVIRONMENT ?= development define ENV_CHECK $(if $(or $(call seq,$(1),development),$(call seq,$(1),production)),true,false) endef .PHONY: test test: @echo "$(ENVIRONMENT)" $(call ENV_CHECK,$(ENVIRONMENT

我试图检查我的
环境
变量是否为空,是否为
开发
生产

ENVIRONMENT ?= development

define ENV_CHECK
       $(if $(or $(call seq,$(1),development),$(call seq,$(1),production)),true,false)
endef

.PHONY: test
test:
       @echo "$(ENVIRONMENT)"
       $(call ENV_CHECK,$(ENVIRONMENT))
My
make test
失败,出现以下错误

# make test
development
false
make: *** [test] Error 1

这将是一种常见的解决方案:

Makefile

ENVIRONMENT ?= development
ifeq ($(filter $(ENVIRONMENT),development production),)
$(error invalid `ENVIRONMENT` value)
endif 

.PHONY: test
test:
    @echo "$(ENVIRONMENT)"

请参见

这将是一种常见的解决方案:

Makefile

ENVIRONMENT ?= development
ifeq ($(filter $(ENVIRONMENT),development production),)
$(error invalid `ENVIRONMENT` value)
endif 

.PHONY: test
test:
    @echo "$(ENVIRONMENT)"