Makefile 在生成步骤期间缓存值
我有以下步骤:Makefile 在生成步骤期间缓存值,makefile,Makefile,我有以下步骤: tag ?= `date +%s` build: docker build -t org/client-api:$(tag) -t org/client-api:latest . push: docker push org/client-api:$(tag) docker push org/client-api:latest 如果我执行make build push,则会重新计算标记的值,因此第一步通过,因为标记是1231231,第二步失败,因为标记
tag ?= `date +%s`
build:
docker build -t org/client-api:$(tag) -t org/client-api:latest .
push:
docker push org/client-api:$(tag)
docker push org/client-api:latest
如果我执行make build push
,则会重新计算标记的值,因此第一步通过,因为标记是1231231,第二步失败,因为标记现在是1231232
如何在步骤之间缓存标记的值?我认为使用?=
就足够了问题在于使用shell-back单引号操作符的赋值。变量标记
与包含此引号的字符串一起赋值,并计算两次
我将在Makefile
中使用shell
操作符(执行一次计算)和:=
操作符(因为date
命令将始终输出某些内容):
tag:=$(shell date +%s)
build:
echo "build: ${tag}"
sleep 3
push:
echo "push: ${tag}"
其中:
$ make build push
echo "build: 1510323684"
build: 1510323684
sleep 3
echo "push: 1510323684"
push: 1510323684
参考问题在于使用shell back单引号运算符的赋值。变量标记
与包含此引号的字符串一起赋值,并计算两次
我将在Makefile
中使用shell
操作符(执行一次计算)和:=
操作符(因为date
命令将始终输出某些内容):
tag:=$(shell date +%s)
build:
echo "build: ${tag}"
sleep 3
push:
echo "push: ${tag}"
其中:
$ make build push
echo "build: 1510323684"
build: 1510323684
sleep 3
echo "push: 1510323684"
push: 1510323684
来自