2017-05-31 1 views
0

J'essaie de vérifier si ma variable ENVIRONMENT n'est pas vide et est development ou production.Makefile - Comment vérifier si la variable n'est pas vide et est l'une des deux valeurs

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)) 

Mon make test échoue avec l'erreur ci-dessous

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

Répondre

2

Ce serait une sorte de solution banale:

Makefile

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

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

Voir 8.2 Functions for String Substitution and Analysis