将日期和时间附加到linux makefile中的环境变量
在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中使用
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 makeshell
函数而不是backticks:LOGFILE=$(LOGPATH)$(shell日期)
同意,为完整起见:LOGFILE=$(LOGPATH)$(shell日期+“%Y.%m.%d-%H:%m:%S”)。也适用于Solaris。LOGFILE
的值在多个目标上不会保持不变。特别是当一个文件依赖于另一个文件时。创建make fileecho-e'TM=$(shell日期+%s.%N)\N\na:\N\techo$(TM)\N\tsleep 2\nb:a\N\techo$(TM)\N'>Makefile
。然后调用依赖目标<代码>生成b。您将看到时间是不同的。但这在不同的目标上并不相同。@ShipluMokaddim使用:=
对整个Makefile保持相同。