Can';不要改变。虚假的目标';GNU Makefile中的系统必备名称

Can';不要改变。虚假的目标';GNU Makefile中的系统必备名称,makefile,gnu,Makefile,Gnu,有人能解释一下原因吗 运行makeclean 印刷品 目标清除 使用下面的makefile .PHONY: all all: clean clean: echo "Target clean" 但是跑步 使清洁成为本地的 抛出异常 没有规则使目标成为“干净的本地” 当我将makefile更改为 .PHONY: all all: clean_local clean_local: echo "Target clean_local" 我无法复制您的第二个练习(顺便说一句,它为我打

有人能解释一下原因吗 运行
makeclean
印刷品

目标清除

使用下面的makefile

.PHONY: all
all: clean

clean:
    echo "Target clean"
但是跑步

使清洁成为本地的

抛出异常

没有规则使目标成为“干净的本地”

当我将makefile更改为

.PHONY: all
all: clean_local

clean_local:
    echo "Target clean_local"

我无法复制您的第二个练习(顺便说一句,它为我打印了两次“Target clean_local”)。你确定你没有打字错误吗?啊,看来我找到了问题的原因。我在问题中传递的Makefile是从另一个Makefile调用的,该Makefile没有clean_local target,但是有clean target(并且调用我在这里粘贴的那个Makefile的clean target)。这就是为什么它适用于清洁,但不适用于清洁。谢谢你看!