Musisz użyć polecenia $ (shell) działanie w makijażu. Jeśli użyjesz operation
, polecenie powłoki zostanie ocenione za każdym razem. Jeśli piszesz do pliku dziennika, nie chcesz, aby nazwa pliku dziennika zmieniała się za każdym razem, gdy uzyskujesz dostęp do niego za pomocą pojedynczego polecenia make.
LOGPATH = logs
LOGFILE = $(LOGPATH)/$(shell date --iso=seconds)
test_logfile:
echo $(LOGFILE)
sleep 2s
echo $(LOGFILE)
Wyjście to będzie:
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
Nie będzie to przyczyna LOGFILE być evaulated każdym razem jest ona wykorzystywana. Na przykład LOGFILE = logi/'Data + '% r% m% d% H:..% M:% S'' echo_logs: echo $ (LOGFILE) 5S snu echa $ ($ LOGFILE) drukuje. kłody echa/'data + '% r% m% d% H:.% M:% S'' logs/10.01.28-14: 21: 08 spać 5s dzienniki echa/'data + '% y.% m.% d-% H:% M:% S'' logs/10.01.28-14: 21: 13 – Aaron
@Aaron: Masz rację; aby tego uniknąć, można użyć funkcji 'shell' zamiast backticks:' LOGFILE = $ (LOGPATH) $ (data powłoki) ' – catwalk
Uzgodniona i dla kompletności: LOGFILE = $ (LOGPATH) $ (data powłoki + '% Y % m.% d%% H:% M:% S '). Działa również w systemie Solaris. – anisbet