【问题标题】:Make always build even when there is no file change即使没有文件更改,也始终构建
【发布时间】:2020-03-05 23:16:54
【问题描述】:

我正在写一个简单的 Makefile:

all: image 

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

.PHONY: all image

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

【问题讨论】:

  • docker 命令实际产生了什么?

标签: makefile


【解决方案1】:

当你运行 make 时,它​​会尝试创建第一个目标,即all。这会导致 make 生成目标 image。因为没有名为image 的实际文件(你甚至告诉make 它是一个 目标),它总是会执行docker 命令。

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

【讨论】:

  • 另请参阅this answer,了解可能的解决方法/解决方案。
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 2016-12-10
  • 2022-01-26
相关资源
最近更新 更多