Makefile目标无法识别依赖动作

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

我写了这个简单的Makefile来说明我的问题。

$make target
  • 调用dep作为依赖项并提取图像
  • 但是[[后续对docker image list -q $(IMG)的检查找不到我的图像。
这里发生了什么,我该如何解决?

IMG := hello-world .PHONY: target target: dep ifeq ($(shell docker image list -q $(IMG)),) echo "docker image list did not recognize the pull" endif .PHONY: dep dep: @docker pull $(IMG)

makefile
1个回答
1
投票
该测试不是

后续。在读取任何规则之前,它会被[[替换放入Makefile中。

您可能想在target规则的命令中执行该测试:

target: dep if test -z "$$(docker image list -q $(IMG))"; then \ echo "docker image list did not recognize the pull" >&2; \ false; \ fi 我们可以将命令更改为只运行docker image inspect-如果图像存在,它将返回true状态,​​否则返回false:

target: dep
        if ! docker image inspect "$(IMG))" >/dev/null 2>&1; then \
            echo "docker image list did not recognize the pull" >&2; \
            false; \
        fi
© www.soinside.com 2019 - 2024. All rights reserved.