1

make プロセスが makefile を移動するときに、各レシピの結果を追跡して報告する単一のログ ファイルを作成しようとしています。

これを行うために、次のようにログファイル参照を保持する環境変数を作成しています。

LOGDIR = logs
LOGFILE = $(LOGDIR)/$(shell date --iso=seconds).log

その意図は、次を使用して、関連するメッセージをログ ファイルに追加することです。
echo "message" >> $(LOGFILE)

問題は、処理が 1 つのレシピから次のレシピに移動するときに、環境変数が再評価され、makefile 内のすべてのレシピから新しいログ ファイルが作成されることです。

環境変数が再評価されるのはなぜですか? ログファイルへの単一のグローバル参照を使用しないようにするにはどうすればよいですか?

アーロンの回答here$(shell operator)に基づいて、構文を使用すると変数の再評価が防止されると思いました。

4

1 に答える 1

1

GNU make を使用している場合は、次のように記述します

LOGFILE := $(LOGDIR)/$(シェル日付 --iso=秒).log

は、式を 1 回だけ評価することになっています。それはあなたの問題を解決しますか?

于 2013-09-28T22:12:22.590 に答える