2017-02-09 14 views
0

複数の環境変数が定義されていることを確認するMakefileルールを作成しようとしています。これはMakefile variable as prerequisiteに近いですが、私は複数の変数にループしようとしています。言い換えれば、私はこれをより簡潔に書くためにしようとしている:それはifndefがforeachの前に評価されるようになりますので、Makefile内のifndef/endif構造体をループする

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

私が、成功せずforeachを使用することを試みました。

答えて

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'. 
関連する問題