Makefile环境变量在配方之间变化

时间:2013-09-28 22:02:13

标签: shell makefile environment-variables

我正在尝试创建一个日志文件,当make过程在makefile中移动时,该文件会跟踪并报告每个配方的结果。

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

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

然后通过使用
向用户添加相关消息 echo "message" >> $(LOGFILE)

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

为什么要重新评估环境变量,如何防止它对日志文件使用单个全局引用?

根据Aaron的回答here,我认为使用$(shell operator)语法会阻止重新评估变量。

1 个答案:

答案 0 :(得分:1)

如果你正在使用GNU make,那么写

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

应该只评估表达式一次。这会解决您的问题吗?