假设我有一个 Makefile,它有两个“主要”目标:foo.o
和clean
. 前者有一个创建foo.o
文件的方法。后者删除所有临时文件。
为了消除foo.o
手动指定依赖项的需要,我的目标foo.d
是有效的 makefile,指定格式的依赖项foo.o foo.d : dep1 dep2 depn
。此依赖文件包含在 makefile 中。
生成文件如下所示:
;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.
foo.o: foo.c
cc -c -o $@ $<
foo.d: foo.c
sh deps.sh $< > $@
include foo.d
.PHONY: clean
clean:
rm …
当我想制作foo.o
时,一切正常:foo.d
得到(重新)制作,它被包含foo.o
并被制作。问题是当我想制作clean
目标时,foo.d
被包含,甚至被制作。
如何防止制作包括制作目标的foo.d
时间clean
?(或者,如何仅在foo.o
制作时包含它?)
该解决方案可以使用 GNU Make 的功能。