生成文件环境变量在配方之间更改



我正在尝试创建一个日志文件,当制作过程通过制作文件时,该文件跟踪和报告每个配方的结果。

为此,我创建了一个环境变量来保存我的日志文件引用,如下所示:

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

然后,目的是通过使用
echo "message" >> $(LOGFILE)

麻烦的是,当处理从一个配方移动到下一个配方时,环境变量会被重新计算,从而导致我的 makefile 中的每个配方都有一个新的日志文件。

为什么重新计算环境变量,如何防止使用对日志文件的单个全局引用?

我认为使用 $(shell operator) 语法可以防止根据 Aaron 在这里的回答重新评估变量。

如果你使用的是 GNU make 那么写

日志文件 := $(LOGDIR)/$(shell date --iso=seconds).log

应该只计算表达式一次。这能解决你的问题吗?

最新更新