2009-12-07 64 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

但是這不會在不同的目標上保持不變。 –