1. ホーム
  2. makefile

[解決済み] Makefileの変数が前提条件として設定されていることを確認する方法は?

2022-04-22 08:32:51

質問

Makefile deploy レシピには環境変数が必要です。 ENV が設定されていないと正しく実行されませんが、他のレシピは気にしません。

ENV = 

.PHONY: deploy hello

deploy:
    rsync . $(ENV).example.com:/var/www/myapp/

hello:
    echo "I don't care about ENV, just saying hello!"

どうすれば、この ENV 変数が設定されていますか?この makefile 変数をデプロイレシピの前提条件として宣言する方法はありますか? 例.

deploy: make-sure-ENV-variable-is-set

解決方法は?

これは、次のような場合に致命的なエラーになります。 ENV が未定義で、何かがそれを必要とします (GNUMake では、とにかく)。

.PHONY: check-env をデプロイします。

デプロイ:チェック・エンブ
	...

その他の必要なもの: check-env
	...

check-env:
ifndef ENV
	$(エラー ENVは未定義です)
エンドイフ

(ifndefとendifはインデントされないことに注意 -) は、make が何を見るかを制御しています。 また、quot;$(error" はタブでインデントされており、ルールのコンテキスト内でのみ実行されるようになっています)。