2017-02-09 11 views
0

Я пытаюсь написать правило Makefile, которое проверяет несколько переменных среды, чтобы убедиться, что они определены. Это близко к Makefile variable as prerequisite, но я пытаюсь перебрать несколько переменных. Другими словами, я пытаюсь написать это более лаконично:Зацикливание над конструкциями ifndef/endif в Makefile

check-env: 
ifndef ENV1 
    $(error ENV1 is undefined) 
endif 
ifndef ENV2 
    $(error ENV2 is undefined) 
endif 
ifndef ENV3 
    $(error ENV3 is undefined) 
endif 

Я пытался использовать foreach без успеха, так как она выглядит ifndef оценивается перед Еогеасп.

ответ

2

Makefile:

variables := a b c 

fatal_if_undefined = $(if $(findstring undefined,$(origin $1)),$(error Error: variable [$1] is undefined)) 
$(foreach 1,$(variables),$(fatal_if_undefined)) 

all: 

Продолжительность:

$ make -f Makefile.sample 
Makefile.sample:4: *** Error: variable [a] is undefined. Stop. 

$ make -f Makefile.sample a=10 b=2 
Makefile.sample:4: *** Error: variable [c] is undefined. Stop. 

$ make -f Makefile.sample a=10 b=2 c=5 
make: Nothing to be done for 'all'.