将日期和时间附加到linux makefile中的环境变量

将日期和时间附加到linux makefile中的环境变量,makefile,environment-variables,Makefile,Environment Variables,在Makefile中,我想使用当前日期和时间创建一个环境变量。伪代码: LOG_FILE := $LOG_PATH + $SYSTEM_DATE + $SYSTEM_TIME 感谢您的帮助。您可以使用“日期”命令您可以使用以下命令: LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'` 注(来自评论): 它将导致每次使用时都对日志文件进行评估。 为了避免这种情况: LOGFILE=$(LOGPATH)$(shell date) 您需要在make中使用

在Makefile中,我想使用当前日期和时间创建一个环境变量。伪代码:

LOG_FILE := $LOG_PATH + $SYSTEM_DATE + $SYSTEM_TIME
感谢您的帮助。

您可以使用“日期”命令

您可以使用以下命令:

LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'`
注(来自评论):

它将导致每次使用时都对日志文件进行评估。 为了避免这种情况:

LOGFILE=$(LOGPATH)$(shell date)
您需要在make中使用$(shell操作)命令。如果使用
操作
,则每次都会对shell命令求值。如果要写入日志文件,则不希望每次在单个make命令中访问日志文件时都更改日志文件名

LOGPATH = logs
LOGFILE = $(LOGPATH)/$(shell date --iso=seconds)

test_logfile:
    echo $(LOGFILE)
    sleep 2s
    echo $(LOGFILE)
这将输出:

echo logs/2010-01-28T14:29:14-0800
logs/2010-01-28T14:29:14-0800
sleep 2s
echo logs/2010-01-28T14:29:14-0800
logs/2010-01-28T14:29:14-0800

这不会导致每次使用日志文件时都要对其进行评估吗。例如:LOGFILE=logs/
date+%y.%m.%d-%H:%m:%S'
echo\u logs:echo$(LOGFILE)sleep 5s echo$($LOGFILE)将打印:echo logs/
date+%y.%m.%d-%H:%m:%S'
logs/10.01.28-14:21:08 sleep 5s echo logs/
date+%y.%m.%d-%H:%S'
logs/10.01.28-14:21:21:13@Aaron:你是对的;为了避免这种情况,可以使用gnu make
shell
函数而不是backticks:
LOGFILE=$(LOGPATH)$(shell日期)
同意,为完整起见:LOGFILE=$(LOGPATH)$(shell日期+“%Y.%m.%d-%H:%m:%S”)。也适用于Solaris。
LOGFILE
的值在多个目标上不会保持不变。特别是当一个文件依赖于另一个文件时。创建make file
echo-e'TM=$(shell日期+%s.%N)\N\na:\N\techo$(TM)\N\tsleep 2\nb:a\N\techo$(TM)\N'>Makefile
。然后调用依赖目标<代码>生成b。您将看到时间是不同的。但这在不同的目标上并不相同。@ShipluMokaddim使用
:=
对整个Makefile保持相同。