即使文件已经存在,make 也会运行目标

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

我有一个像这样的Makefile

bin:
    mkdir -p bin

bin/kustomize: bin
    curl -fsSL "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash -s bin

当我运行

make bin/kustomize
时,它每次都会尝试下载它,即使它已经存在。我希望 make 不想运行该目标。

当我删除对

bin
的依赖时,它会按我的预期工作。

makefile gnu-make
1个回答
1
投票

您的

bin/
是一个目录,而不是普通文件。

GNU 在您的规则

中建立依赖关系
bin/kustomize: bin

表示每次

bin/kustomize
的修改时间发生变化时,都应重建文件
bin/

但是覆盖目录内的文件条目(技术上将名称与索引节点相关联)会更改目录修改时间。

正如 HolyBlackCat 所评论的,您需要一个 仅限订单的先决条件

如果您希望在内容更改时触发构建规则(而不仅仅是使用修改时间),请考虑使用其他构建器软件,也许是 omake

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