我有一个大型项目,我已经实现了预编译头文件。我也希望能够让它与distcc一起工作。根据谷歌代码文件here
中的4.12节gcc 3.3版包含一些性能改进,使得distcc不那么直接有用。
一个是预编译头,在读取一组公共头文件后,编译器的内部状态被转储到磁盘。这对于包含大量固定标头集的程序非常有用,其中解析标头占用了大部分编译时间。目前,distcc可以通过将.pch状态文件放在共享文件系统上来支持这一点。未来可能会为distcc添加更好的解决方案。
我不认为使用共享文件系统对我来说是一个很好的解决方案。但后来也提到了一个潜在的补丁,可以更好地将预编译的头文件和distcc一起工作:https://lists.samba.org/archive/distcc/2008q2/003646.html。这将涉及在客户端上设置DISTCC_PCH
(或使用编译器选项-fpch-preprocess
,请参阅here),并将pch
选项添加到DISTCC_HOSTS
服务器。我已经尝试了这个,但它似乎没有用,所以我怀疑这个补丁没有集成。
在共享文件系统之上和之上是否支持distcc中的预编译头文件?或者让技术合作的任何合理直接的方式?
更新:我现在有一种情况,我使用预编译头文件编译本地构建和distcc构建我强制包括预编译头文件,以便local和distcc构建两个编译完全相同的源。通过仔细选择预编译头文件,我可以获得比以前快40%左右的本地调试版本,并且distcc构建只会慢大约4%。我喜欢以某种方式将预编译的头文件和distcc结合起来以获得加速,比如10%或20%,使用distcc构建,只需要相当少的努力和干扰(加速构建不是我的主要责任,除此之外在公司环境中,我的能力有限。)