CCache

CCache可以把编译产物缓存起来,从而提高下一次编译的速度,关于CCache的设置,网络上已经有很多文章了,比如[贝聊科技]如何将 iOS 项目的编译速度提高5倍,应用到我们的项目中后,打包速度从8分钟提升到1分半,效果拔群。

问题

不过大部分教程只说明了在工程文件中配置,但是如果是用xcodebuild上打包的话,会发现CCache没有生效,这样就无法应用到一些自动化打包脚本上了,因为我们项目是在Jenkins上打包的,也同样不生效。

解决方案

在查找了好久解决方案后,初步判断应该是xcodebuild不走工程的一些自定义配置,后来找到一种解决方案就是,直接修改xcode里的xcode clang Compiler Plugin,把默认的clang改为ccache clang,从而让所有在xcode上的打包都走ccache。

1.建立ccache脚本
首先还是跟正常配置ccache一样先建立脚本

  export CCACHE_MAXSIZE=10G
  export CCACHE_CPP2=true
  export CCACHE_HARDLINK=true
  export CCACHE_SLOPPINESS=file_macro,time_macros,include_file_mtime,include_file_ctime,pch_defines

  # 指定日志文件路径到桌面,等下排查集成问题有用,集成成功后删除,否则很占磁盘空间
  #export CCACHE_LOGFILE=~/Desktop/CCache.log
  exec ccache /usr/bin/clang "$@"

文件名自定义,我用的是ccache-clang,然后放到常用的目录里,这里我在用户根目录新建了ccache目录放到/Users/用户名/ccache/ccache-clang,其实放哪都行,C++的同理。

然后再应用程序中找到xocde-显示包内容->Contents->PlugIns->Xcode3Core.ideplugin

接着继续Xcode3Core.ideplugin->显示包内容->Contents->SharedSupport->Developer->Library->Xcode-Plug-ins->Clang LLVM 1.0.xcplugin,找到Clang LLVM 1.0.xcplugin后。

继续Clang LLVM 1.0.xcplugin->显示包内容->Contents->Resources->Clang LLVM 1.0.xcspec

最后的Clang LLVM 1.0.xcspec就是我们要修改的文件了,不过这里修改的话需要管理员密码,这里有两种方法,一种是先拷贝Clang LLVM 1.0.xcspec出来,修改后再拷贝回去,另一种是直接用可以调用密码输入权限的编辑器,比如vscode。

打开Clang LLVM 1.0.xcspec,查找ExecPath = "clang",然后修改成ExecPath = "clang-new",然后输入密码保存。

接着我们进入终端:

cd $( xcode-select -p)/usr/bin
sudo ln -s ~/Users/用户名/ccache/ccache-clang clang-new

这里就是创建个软链接,把clang-new链接到我们刚创建的脚本路径上,这样后面xcode所有clang的就会先走ccahce-clang的脚本配置。

到此就实现了xcodebuild上默认支持ccache的配置了,赶紧应用起来吧~

参考资料:
https://blog.csdn.net/pengyuan_D/article/details/76020395