即使没有文件更改也要始终生成

问题描述 投票:0回答:1

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

all: image 

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

.PHONY: all image

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

makefile
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.