我正在尝试创建一个日志文件,当制作过程通过制作文件时,该文件跟踪和报告每个配方的结果。
为此,我创建了一个环境变量来保存我的日志文件引用,如下所示:
LOGDIR = logs
LOGFILE = $(LOGDIR)/$(shell date --iso=seconds).log
然后,目的是通过使用
echo "message" >> $(LOGFILE)
麻烦的是,当处理从一个配方移动到下一个配方时,环境变量会被重新计算,从而导致我的 makefile 中的每个配方都有一个新的日志文件。
为什么重新计算环境变量,如何防止使用对日志文件的单个全局引用?
我认为使用 $(shell operator)
语法可以防止根据 Aaron 在这里的回答重新评估变量。
如果你使用的是 GNU make 那么写
日志文件 := $(LOGDIR)/$(shell date --iso=seconds).log
应该只计算表达式一次。这能解决你的问题吗?