我正在尝试使用ccache加速我的重建,我在日志中注意到了这一点:
[2015-04-17T10:41:45.845545 27682] Compiler option -M is unsupported
[2015-04-17T10:41:45.845584 27682] Failed; falling back to running the real compiler
根据我的经验,您需要类似-M标志的东西才能使make或其等效触发器正确重建。似乎奇怪的是,ccache会被一个必须在几乎每个项目构建中的选项所绊倒。我错过了什么吗?有更优选的选择吗?
这是w / ccache-3.2.1。
编辑:我也试过-MM,没有运气。
答案 0 :(得分:2)
ccache目前不支持编译器选项-M
和-MM
(它从未支持过它们)是正确的。
为什么有关选项不受支持的一些原因:
最有可能通过让ccache运行编译器命令两次来实现支持:一个没有 -M
/ -MM
来检索预处理的源代码(使用它结果应该是关联的)和一个与 -M
/ -MM
来检索结果(制作规则)。
但是,我(在过去的六年中作为ccache维护者发言)直到现在还没有听到任何人错过对-M
/ -MM
的支持,所以我的印象是-M
/ -MM
实际上用得不多。
我错过了什么吗?有更优选的选择吗?
是的,我会说标准方法是使用-MD
/ -MMD
(ccache支持)而不是-M
/ -MM
。 -MD
/ -MMD
是优越的,因为它们同时生成.o
和.d
文件,而-M
/ -MM
仅生成.d
文件,因此在这种情况下,编译器必须由Makefile为每个源代码文件调用两次。例如,请参阅http://www.microhowto.info/howto/automatically_generate_makefile_dependencies.html了解如何使用-MD
/ -MMD
。