Makefile:删除没有依赖关系的中间文件

问题描述 投票:0回答:1

堆叠!

孜孜不倦的实验和搜索也没有找到解决这个看似简单的问题的方法。

在我的构建中,.cc 文件依赖于 .proto 文件。在 make 过程中,.proto 文件被翻译成 .cc 和 .h 文件,然后收集并构建成可执行文件。

如何确保当我删除一个.proto 时,相应的中间.cc 文件在make 过程中自动删除? (如果不是,它将被带入构建的下一阶段,这在过去引起了问题。)

现在,当我删除或重命名 .proto 时,我只是清除所有生成的 .cc/.h 文件——这是正确的,但会触发几乎整个系统的重建。

提前致谢...!

makefile
1个回答
1
投票

你可以写一个像

clean
这样的规则,但不那么严格:

SOURCES = $(PROTOS:.proto=.cc)

.PHONY: tidy
tidy:
        @rm -f $(filter-out $(SOURCES), $(wildcard *.cc))

然后您可以手动启动此规则,或使其成为可执行文件的仅订单先决条件。

或者您可以将相同的命令放入可执行文件的规则中,但这有点不雅。

© www.soinside.com 2019 - 2024. All rights reserved.