Makefile 为什么我的清白目标会被执行?

Makefile 为什么我的清白目标会被执行?,makefile,Makefile,我有下面的makefile。然而,我注意到中间构建结果正在从T2OUT中删除。这是正常的/预期的行为吗 BUILDROOT=../../.. T2OUT=$(BUILDROOT)/t2-output/linux64-gcc-production-default TUNDRA2=cd $(BUILDROOT); tundra2 production DOCKER_TAG=services SERVICES=managerservice \ schedulerservice \ p

我有下面的makefile。然而,我注意到中间构建结果正在从T2OUT中删除。这是正常的/预期的行为吗

BUILDROOT=../../..
T2OUT=$(BUILDROOT)/t2-output/linux64-gcc-production-default
TUNDRA2=cd $(BUILDROOT); tundra2 production
DOCKER_TAG=services

SERVICES=managerservice \
    schedulerservice \
    paymentservice \
    userservice \
    storageservice \
    libModCouchbase.so 

all: $(SERVICES)
    chmod +x wait_to_start.sh
    docker build -t $(DOCKER_TAG) .
    docker push $(DOCKER_TAG)

$(T2OUT)/libModCouchbase.so:
    $(TUNDRA2) ModCouchbase

$(T2OUT)/%: 
    $(TUNDRA2) $*

%: $(T2OUT)/%
    cp $< $@

clean: 
    rm -f $(SERVICES)
    rm -rf $(T2OUT)

.PHONY: all clean 
BUILDROOT=../../。。
T2OUT=$(BUILDROOT)/t2输出/linux64 gcc生产默认值
苔原2=cd$(BUILDROOT);冻土带生产
DOCKER_标签=服务
服务=管理服务\
调度服务\
支付服务\
用户服务\
存储服务\
libModCouchbase.so
全部:$(服务)
chmod+x wait_to_start.sh
docker build-t$(docker_标签)。
docker push$(docker_标签)
$(T2OUT)/libModCouchbase.so:
$(冻土带2)ModCouchbase
$(T2OUT)/%:
$(冻土带2)$*
%:$(T2OUT)/%
cp$<$@
清洁:
rm-f$(服务)
rm-rf$(T2OUT)
.骗子:都是干净的

是。它与您的
clean
目标无关。如果有问题,您可以使用
.preciouse
符号目标保留中间产物。将
.PRECIOUS:foo
规则添加到makefile将防止中间
foo
被删除。