2013-09-28 46 views
1

我試圖創建一個單一的日誌文件,跟蹤並報告每個配方的結果,因爲make過程通過生成文件移動。Makefile環境變量配方之間的變化

要做到這一點,我創建了一個環境變量來保存像這樣我的日誌文件參考:

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

目的是然後用
echo "message" >> $(LOGFILE)

相關消息添加到日誌文件

問題是,當處理從一個配方移動到下一個配方時,環境變量會被重新評估,導致我的makefile中每個配方產生一個新的日誌文件。

爲什麼要重新評估環境變量,以及如何防止這種情況使用對日誌文件的單個全局引用?

我認爲使用$(shell operator)語法可以防止重新評估變量,基於Aaron的回答here

回答

1

如果您正在使用GNU使然後寫

LOGFILE:= $(LOGDIR)/ $(殼日期--iso =秒)的.log

應該只有一次計算表達式。這是否解決了你的問題?

+0

確實,我錯過了變量賦值中的冒號,謝謝! –