Makefile中的时代差异

时间:2014-05-22 14:07:56

标签: bash makefile epoch gnu-make

以下是我的Makefile的一部分(有错误)。我只想要时代和最大纪元之间的差异并打印出来。但我不确定错误是什么。有人可以帮我这个吗? 谢谢

EPOCH_MAX = 1400000000

identifier:
    epoch = $(shell date +%s)
    echo $(epoch)
    residue = $(epoch)-$(EPOCH_MAX) 
    echo $(residue)

我收到以下错误

epoch = 1400767572
make: epoch: Command not found
make: *** [identifier] Error 127

2 个答案:

答案 0 :(得分:0)

您正在混合Makefile变量和shell变量。 您可能需要以下代码:

  EPOCH_MAX = 1400000000
  epoch = $(shell date +%s )

  identifier:
        echo $(epoch)
        (( residue = $(epoch) - $(EPOCH_MAX) )) || true ;\
        echo $${residue}

编辑:正如MadScientist强调的那样,这根本不可移植。更好的是例如:

  EPOCH_MAX = 1400000000

  identifier:
      epoch=$(shell date +%s ); \
      echo $$epoch; \
      residue=`expr $$epoch - $(EPOCH_MAX)`; \
      echo $$residue

答案 1 :(得分:0)

以下似乎也可以正常工作。但是使用shell。

EPOCH_MAX = 1400000000
epoch = $(shell date +%s )
residue =$(shell echo $(epoch)\-$(EPOCH_MAX) | bc)


identifier:
   echo $(epoch)
   echo $(residue)