$(error ...)
特定の前提条件が満たされない場合、make プロセスを中止するために使用したいと思います。失敗した場合、fails_to_work
ターゲットは中止する必要がありtest -d /foobar
ます。
BAD.mk
all: this_works fails_to_work
this_works:
@echo echo works...
@test -d ~ || echo ~ is not a directory
@test -d /foobar || echo /foobar is not a directory
fails_to_work:
@echo error does not work...
@test -d ~ || $(error ~ is not a directory)
@test -d /foobar || $(error /foobar is not a directory)
$ make -f BAD.mk
echo works...
/foobar is not a directory
BAD.mk:9: *** ~ is not a directory. Stop.
ご覧のとおり、「エラーが機能しません...」でさえ画面にエコーされません。のレシピは、fails_to_work
開始する前に失敗します。これを解決するにはどうすればよいですか?私の使用例の 1 つは ですが@test -d $(MY_ENV_VAR)
、例に示されているハードコードされたパスと異なるとは思いません。
UPDATE(バージョン情報)
$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu