2009-12-07 36 views

回答

19

您可以使用此:

LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'` 
+3

这会不会导致LOGFILE被evaulated每次使用它。 例如: LOGFILE =日志/'日期+'%Y%米%D-%H:%M:%S'' echo_logs: 回声$(LOGFILE) 睡眠5S 回波$ ($ LOGFILE) 将打印: 回波日志/'日期+'%Y%米%D-%H:%M:%S'' 日志/ 10.01.28-14:21:08 睡眠5s 回声记录/'日期+'%y。%m。%d-%H:%M:%S'' logs/10.01.28-14:21:13 – Aaron

+4

@Aaron:You are;为避免这种情况,可以使用gnu make'shell'函数代替反引号:'LOGFILE = $(LOGPATH)$(shell date)' – catwalk

+1

同意和完整性:LOGFILE = $(LOGPATH)$(shell date +'%Y 。%M%D-%H:%M:%S')。也适用于Solaris。 – anisbet

24

你需要化妆用$(壳操作)命令。如果您使用operation,那么每次都会对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 
+2

但是这不会在不同的目标上保持不变。 –