测试效不雅
Carthage
- cache directory /Users/mac/.ccache
- primary config /Users/mac/.ccache/ccache.conf
- secondary config (readonly) /usr/local/Cellar/ccache/3.3.4_1/etc/ccache.conf
- cache hit (direct) 14378
- cache hit (preprocessed) 1029
- cache miss 7875
- cache hit rate 66.18 %
- called for link 61
- called for preprocessing 48
- compile failed 2
- preprocessor error 4
- can’t use precompiled header 70
- unsupported compiler option 2332
- no input file 11
- cleanups performed 0
- files in cache 35495
- cache size 1.3 GB
- max cache size 5.0 GB
如不雅成功接入,就能看见 cache miss 不为0。因为第一次编译没有缓存,肯定是全 miss 的。接着编译第二遍,如不雅能看见 cache hit 的数字开端飙升,恭喜你,接入成功了。
CocoaPods 的处理
如不雅你的项目不消 CocoaPods 来做担保理,那你已经完全接入成功了,不消履行下面的操作。
因为 CocoaPods 会零丁把第三方库打包成一个 Static Library(或者是Dynamic Framework,如不雅用了 use_frameworks!选项),所以 CocoaPods 生成的 Static Library 也须要把 Enable Modules 选项给关掉落。然则因为 CocoaPods 每次履行 pod update 的时刻都邑把 Pods 项目从新生成一遍,如不雅直接在 Xcode 琅绫擎修改 Pods 项目琅绫擎的 Enable Modules 选项,下次履行pod update的时刻又会被改回来。我们须要在 Podfile 琅绫擎参加下面的代码,让生成的项目封闭 Enable Modules 选项,同时参加 CC 参数,不然 pod 在编译的时刻就无法应用 CCache 加快:
- post_install do |installer_representation|
- installer_representation.pods_project.targets.each do |target|
- target.build_configurations.each do |config|
- #封闭 Enable Modules
- config.build_settings['CLANG_ENABLE_MODULES'] = 'NO'
- # 在生成的 Pods 项目文件中参加 CC 参数,路径的值根据你本身的项目来修改
- config.build_settings['CC'] = '$(PODS_ROOT)/../ccache-clang'
- end
- end
- end
集盘考题排查
重点存眷日记文件的输出和ccache -s 敕令的统计,如不雅在日记中看到了 unsupported compiler option -fmodules 如许的字眼,就是你的 Enable Modules 没有关掉落了,根据前面的步调细心检查。其他问题,参考官方文档的 Troubleshooting。
进一步的优化
移除 Precompiled Header File
它能增快构建速度的重要原因是缓存了编译结不雅,经由过程持续监督项目目次的文件变更,每次编译时只编译有修改的文件。别的一个让我很受启发的功能是 HTTP Cache Server,经由过程一台缓存文件办事器来保存大年夜家的编译结不雅,如许只要团队里个一一人编译过的文件,其他人就不消再编译了,直接下载久煨。
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 在当前企业改变传统的单体应用,拥抱更灵活的、应用容器的云原生 DevOps 模型的大年夜潮之下,Docker 具有先>>>详细阅读
本文标题:如何将iOS项目的编译速度提高5倍
地址:http://www.17bianji.com/lsqh/38068.html
1/2 1