孜孜以求的实验和搜索没有找到任何解决这个看似简单的问题。
在我的build中,.cc文件依赖于.proto文件。在make过程中,.proto文件被转换成.cc和.h文件,然后收集并构建到可执行文件中。
如何确保在删除.proto文件时,相应的中间.cc文件会在make过程中自动删除? (如果不是,它会进入构建的下一个阶段,并且在过去造成了问题。)
现在,我只是在删除所有生成的.cc/.h文件时删除或重命名一个.proto--这是正确的,但触发几乎整个系统的重建。
在此先感谢...!
孜孜以求的实验和搜索没有找到任何解决这个看似简单的问题。
在我的build中,.cc文件依赖于.proto文件。在make过程中,.proto文件被转换成.cc和.h文件,然后收集并构建到可执行文件中。
如何确保在删除.proto文件时,相应的中间.cc文件会在make过程中自动删除? (如果不是,它会进入构建的下一个阶段,并且在过去造成了问题。)
现在,我只是在删除所有生成的.cc/.h文件时删除或重命名一个.proto--这是正确的,但触发几乎整个系统的重建。
在此先感谢...!
你可以写像clean
的规则,但不那么严格:
SOURCES = $(PROTOS:.proto=.cc)
.PHONY: tidy
tidy:
@rm $(filter-out $(SOURCES), $(wildcard *.cc))
然后,您可以手动启动该规则,或使其可执行的命令,唯一的先决条件。
或者你可以在你的可执行文件的规则中放入相同的命令,但这样做有点不雅。
哦,这看起来非常可行。事实上,我的makefile实际上并不直接生成可执行文件 - 它会调用XCode或VisualStudio来完成构建的这部分内容,因此将该规则放在该位置实际上非常简洁 - “整理在转移到构建阶段之前“。谢谢! –
如果Make完成后立即删除生成的文件(即完成可执行文件的生成时),就足够了吗?直到/除非.proto文件中的一个比可执行文件更新,否则不会重新生成它们。 – Beta
好问题 - 不幸的是,答案是“不是真的”。我经常在IDE(即XCode或Visual Studio 2010)中运行程序 - 它需要在那里有中间的.cc文件。制作阶段只是为此做好准备。 –
有趣...哪个版本的Make? – Beta