堆叠!
孜孜不倦的实验和搜索也没有找到解决这个看似简单的问题的方法。
在我的构建中,.cc 文件依赖于 .proto 文件。在 make 过程中,.proto 文件被翻译成 .cc 和 .h 文件,然后收集并构建成可执行文件。
如何确保当我删除一个.proto 时,相应的中间.cc 文件在make 过程中自动删除? (如果不是,它将被带入构建的下一阶段,这在过去引起了问题。)
现在,当我删除或重命名 .proto 时,我只是清除所有生成的 .cc/.h 文件——这是正确的,但会触发几乎整个系统的重建。
提前致谢...!
你可以写一个像
clean
这样的规则,但不那么严格:
SOURCES = $(PROTOS:.proto=.cc)
.PHONY: tidy
tidy:
@rm -f $(filter-out $(SOURCES), $(wildcard *.cc))
然后您可以手动启动此规则,或使其成为可执行文件的仅订单先决条件。
或者您可以将相同的命令放入可执行文件的规则中,但这有点不雅。