考虑一下Makefile
:
.PHONY: all
all: main.txt
main.txt: build/main.txt
cp build/main.txt .
%/main.txt: %/data.txt
cp $*/data.txt $*/main.txt
%/data.txt:
touch $*/data.txt
运行后make
,build/data.txt
将自动删除。为什么会这样呢?
我尝试添加.PRECIOUS: build/%
到文件中,但无济于事,该文件仍被删除。我该如何预防?
您还可以将隐式规则的目标模式(例如'%.o')列出为特殊目标.PRECIOUS的必备文件,以保留由目标模式与该文件名匹配的规则创建的中间文件。
前提条件.PRECIOUS
是现有隐式规则的(精确)目标模式。
在您的情况下,它将%/data.txt
改为。
文档暗示了这一点,但对此并不十分清楚。
附带说明:据我所知,build/main.txt
它不会被自动删除,因为它被明确命名为main.txt
目标的先决条件,并且build/data.txt
由于它从未被明确命名而被自动删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句