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

ng5*_*000 21 makefile environment-variables

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

LOG_FILE := $LOG_PATH + $SYSTEM_DATE + $SYSTEM_TIME
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏 - 谢谢.

Aar*_*ron 35

您需要在make中使用$(shell operation)命令.如果使用operation,则每次都会评估shell命令.如果要写入日志文件,则不希望每次在单个make命令中访问日志文件名时都会更改日志文件名.

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

test_logfile:
    echo $(LOGFILE)
    sleep 2s
    echo $(LOGFILE)
Run Code Online (Sandbox Code Playgroud)

这将输出:

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
Run Code Online (Sandbox Code Playgroud)

  • 但这并不是在不同的目标上保持不变. (2认同)
  • @ShipluMokaddim 使用 `:=` 来保持整个 Makefile 相同。 (2认同)

cat*_*alk 22

你可以用这个:

LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'`
Run Code Online (Sandbox Code Playgroud)

  • @Aaron:你是对的; 为了避免这个,可以使用gnu make`hell`函数而不是反引号:`LOGFILE = $(LOGPATH)$(shell date)` (5认同)
  • 这不会导致每次使用LOGFILE时都会被评估.例如:.LOGFILE =日志/`日期+'%Y%米%D-%H:%M:%S'` echo_logs:回声$(LOGFILE)睡眠5S回声$($ LOGFILE)将打印:回波日志/`日期+ '%Y%米%D-%H:%M:%S'`日志/ 10.01.28-14:21:08睡眠5S回声日志/`日期+' %Y%米. %d-%H:%M:%S'`logs/10.01.28-14:21:13 (4认同)
  • 出于完整性考虑,同意:LOGFILE = $(LOGPATH)$(shell日期+'%Y.%m。%d-%H:%M:%S')。也可在Solaris上使用。 (2认同)