【问题标题】:Makefile environment variable changes between recipes配方之间的 Makefile 环境变量更改
【发布时间】:2013-09-28 22:02:12
【问题描述】:

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

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

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

然后打算使用
echo "message" >> $(LOGFILE)

将相关消息添加到日志文件中

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

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

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

【问题讨论】:

    标签: shell makefile environment-variables


    【解决方案1】:

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

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

    应该只对表达式求值一次。这能解决你的问题吗?

    【讨论】:

    • 确实,我在变量赋值中遗漏了冒号,谢谢!
    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2016-01-06
    • 1970-01-01
    • 2014-04-15
    • 2016-12-18
    相关资源
    最近更新 更多