即使没有文件更改也要始终构建

时间:2020-03-05 01:51:00

标签: makefile

我正在编写一个简单的Makefile:

all: image 

image: ./common ./source
    docker build -t some-resource -f source/Dockerfile .

.PHONY: all image

我希望image仅在文件夹commonsource下的文件更改时才构建。但是当我运行make时,即使没有任何文件更改,它也始终运行docker run。有什么问题吗?

1 个答案:

答案 0 :(得分:1)

运行make时,它将尝试建立第一个目标,即all。这使得make成为目标image。由于没有名为image的实际文件(您甚至告诉make它是一个 phony 目标),因此它将始终执行docker命令。

在这种情况下,make无法确定“公共和来源已更改”。通常,通过比较目标和依赖项的修改时间戳来做到这一点,但是没有实际的目标要检查(image不是文件)。