我正在尝试创建一个日志文件,当make过程在makefile中移动时,该文件会跟踪并报告每个配方的结果。
为此,我正在创建一个环境变量来保存我的日志文件引用,如下所示:
LOGDIR = logs
LOGFILE = $(LOGDIR)/$(shell date --iso=seconds).log
然后通过使用
向用户添加相关消息
echo "message" >> $(LOGFILE)
麻烦的是,当处理从一个配方移动到下一个配方时,环境变量被重新评估,从而导致我的makefile中每个配方的新日志文件。
为什么要重新评估环境变量,如何防止它对日志文件使用单个全局引用?
根据Aaron的回答here,我认为使用$(shell operator)
语法会阻止重新评估变量。
答案 0 :(得分:1)
如果你正在使用GNU make,那么写
LOGFILE:= $(LOGDIR)/ $(shell date --iso = seconds).log
应该只评估表达式一次。这会解决您的问题吗?