2012-08-10 44 views
4

我一直在想......ccache为什么不经常使用gcc?

是否有与ccache的一些限制?

如果在以后的编译时间是如此之大的差别, 为什么使用ccache不多Linux开发人员的频繁?

+1

参考ccache,只需要你有多少开发人员使用它的信息,而这些编译时的数字吗? – Useless 2012-08-10 16:15:02

+2

@Useless:一些高级信息:* ccache *是一个用作编译器封装的工具,它使用给定的参数调用编译器并缓存编译结果。如果目标文件被删除并且触发了新的编译,* ccache *将检查源文件和编译器选项,并从缓存中提取结果(如果可用)。基本上它允许'干净; make'只是'make'的效率(主要用于makefile依赖不被正确跟踪的情况)。 [有关如何确定是否可以使用缓存的.o的详细信息] – 2012-08-10 16:19:30

+1

因此,对于不能编写正确的makefile的人来说,这是一个难题?如果你总是不得不“干净”,那么构建系统并没有完成它的工作。 – Useless 2012-08-10 16:33:03

回答

7

我想这简单的答案是,ccache是伟大的,当构建系统被破坏(即依赖不会被正确跟踪,并把一切建立正确,您可能需要make clean; make)。在另一方面,如果依赖是正确跟踪,然后ccache不会产生任何优势平原make,并实际上将承担维护缓存和更新它的成本(高速缓存的大小可能巨大取决于大小项目)

+2

+1:写正确,非递归makefile文件,看那些同时建立飞 – Useless 2012-08-10 16:36:11

+1

ccache的也是非常有帮助的,当你在一个广泛包含的头改变的东西,然后改回。 (或者说,如果你所做的只是在这样的头文件的注释中修正拼写错误)。 – SamB 2012-09-07 17:44:08

+3

当我切换分支时,我使用的构建系统会跳闸,而ccache真的可以帮助解决这个问题。 – 2012-12-12 13:01:20