これが許されるのはGNU make version 3.81以降のようだ。
case文みたく、重なりがないことが明らかな場合は以下のようにする方が見やすそうだ。
ifeq ($(FOO),a)
$(warning FOO is a)
else ifeq ($(FOO),b)
$(warning FOO is b)
else ifeq ($(FOO),c)
$(warning FOO is c)
else ifeq ($(FOO),d)
$(warning FOO is d)
endif
make version 3.80 の場合、上記は以下のようにエラーになってしまう。
Makefile:5: FOO is a
Makefile:6: `else' 疑似命令の後ろに無関係な文字列があります
Makefile:8: `else' 疑似命令の後ろに無関係な文字列があります
Makefile:8: *** 一つの条件部につき一つしか `else' を使えません。中止。
ポータビリティのことを考えるなら、以下のように書いた方がよさそうだ。
ifeq ($(FOO),a)
$(warning FOO is a)
else
ifeq ($(FOO),b)
$(warning FOO is b)
else
ifeq ($(FOO),c)
$(warning FOO is c)
else
ifeq ($(FOO),d)
$(warning FOO is d)
endif
endif
endif
endif
しかしこれだと、インデントがないと、わけがわからなくなるな。
ネストが深くなると大変そうだ。
case文みたく、重なりがないことが明らかな場合は以下のようにする方が見やすそうだ。
ifeq ($(FOO),a)
$(warning FOO is a)
endif
ifeq ($(FOO),b)
$(warning FOO is b)
endif
ifeq ($(FOO),c)
ifeq ($(FOO),c)
$(warning FOO is c)
endif
ifeq ($(FOO),d)
ifeq ($(FOO),d)
$(warning FOO is d)
endif
0 件のコメント:
コメントを投稿