强制GNU make执行特定目标

时间:2010-06-21 10:34:52

标签: makefile gnu

我正在尝试执行一个名为“make cleanlists”的目标。该目标没有先决条件,应该立即执行(在我的理解中)而不涉及其他规则。

.PHONY: cleanlists
cleanlists:
    @echo cleaning source and header lists ..
    @rm -f sourcelist.mk
    @rm -f headerlist.mk
    @echo done. 

但是,如果这两个文件不存在,则会检查将这些文件作为先决条件的其他规则,并最终在执行“清单列表”目标之前重新生成它们。

有没有简单的方法强制make来避免这种行为?

由于

1 个答案:

答案 0 :(得分:1)

这两个文件的 .mk 名称表明你的makefile中的其他地方你将它们包含为要解析和执行的makefile内容:

include sourcelist.mk
include headerlist.mk

为了使用最新的makefile执行make cleanlists命令, make 重新生成这些文件,并在计算依赖关系和执行命令之前重新整理整个makefile,如{ {3}}

这对于干净的规则没什么意义,但 make 并不知道。您可以使用How Makefiles Are Remade特别处理此特定规则:

ifneq "$(MAKECMDGOALS)" "cleanlists"
include sourcelist.mk
include headerlist.mk
endif