微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ccache如何提高构建速度?

如何解决ccache如何提高构建速度?

我正在使用cmake设置项目,当我更改项目中的文件时,我发现cmake知道只重新编译更改的文件,然后将所有内容重新链接在一起以生成最终的可执行文件/库。

然后,我通读了有关ccache的文档,我不了解的是:ccache的方法(使用哈希值检查文件是否已更改并且需要重新编译)与cmake的方法之间有什么区别? (或者可能还有其他事情,而不是cmake检查文件更新,但是您知道我的意思)。也许PCH部分有所不同,但是cmake 3.18现在提供了PCH支持,这是否意味着ccache在PCH部分上提供的好处不再独特了?

解决方法

考虑一下您切换到项目的某个较旧分支的情况-您过去曾经编译过并且ccache已缓存,但是CMake认为“几乎所有文件都已更改并且必须重新编译”-在这里巨大的收获。

另一种情况是您已经删除了构建目录(出于某些理由),现在必须重新构建所有内容。 ccache也是巨大的帮助。

也; ccache的设置很简单,并且此后是完全不可见/透明的,因此,没有理由不使用它。当它有所帮助时,通常会有很大帮助,而当它没有帮助时,它就不会受到伤害。

,

cmake / gmakeccache并不互斥。它们通常一起使用。

当出于某些原因需要重建 整个 源代码树时,

ccache就起作用了。 cmake / gmake仅重建已更改的文件,但是在某些情况下需要重新编译整个源代码树。并且,如果这种情况反复发生,ccache将唤醒并使编译器短路。 C ++编译器因运行缓慢而臭名昭著,这通常会有所帮助。

仅举几个例子:当您需要在有优化和无优化的建筑之间反复切换时,请反复进行。在编辑Makefile和调整编译标志时,cmake / gmake将无济于事。所有源文件实际上都没有更改,因此cmake / gmake认为没有任何事情要做,因此您必须显式make clean并从头开始重新编译。

如果您重复执行此操作,ccache将避免在整个源代码上运行编译器,并且只需提取适当的对象模块,而不必从头开始编译源代码。

另一种常见情况是,您正在运行脚本来为代码准备可安装的程序包。通常,这涉及使用特定于实现的工具,从头开始将源代码重建为可安装的软件包。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。