CCache是c/c++的编译器缓存。当同样的编译被再次编译时,进行检測并通过之前编译的缓存进行编译加速。所以我们能够通过这样的方法给cocos2d-x android的编译加速。
使用这样的方法,在i7 CPU的Macbook Pro Retina上编译,我们的cocos2d-x androidproject编译时间能够从10分钟降低到30秒!!
注意:下面操作仅对MacOSX有效。
安装
我们使用homebrew:
brew install --HEAD ccache
或者通过源代码安装:
git clone https://github.com/jrosdahl/ccache.gitcd ccache./autogen.sh./configuremakemake installcp /usr/local/bin/ccache /usr/bin/
注意:默认的安装路径是 /usr/local/bin,我们须要拷贝ccache到/usr/bin/,不然ndk-build会找不到并报错
假设终端报错说找不到autoheader,这说明我们须要先安装automake:
brew install automake
可是,假设假设报错是说找不到brew,我们就必须先安装brew:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
确保ccache的路径能够被$PATH识别。执行命令:
ccache
假设你看到帮助信息,恭喜你,成功安装了!
在android上配置编译环境
我们必须先设置下面环境变量来使用ccache:
vim ~/.bash_profile Add following lines:export USE_CCACHE=1export NDK_CCACHE=/usr/local/bin/ccache
执行命令行:
ccache -M 10G
这个命令将缓存大小设置为10G。当然,假设你的硬盘有足够的空间。你也能够将此设置为50G。
然后。我们跳转到NDK文件夹,假设你忘了这个路径,你能够使用下面命令来查看:
which ndk-build
下面是我的输出结果:
/developer/android/android-ndk-r9b/ndk-build
所以,我的NDK_ROOT是:
/developer/android/android-ndk-r9b
打开文件:$NDK_ROOT/build/core/default-build-commands.mk
找到下面章节并增加ccache,例如以下:
ifneq ($(findstring ccc-analyzer,$(CC)),)TARGET_CC = $(CC)elseTARGET_CC = ccache $(TOOLCHAIN_PREFIX)gcc #Add ccache supportendifTARGET_CFLAGS =TARGET_CONLYFLAGS =ifneq ($(findstring c++-analyzer,$(CXX)),)TARGET_CXX = $(CXX)elseTARGET_CXX = ccache $(TOOLCHAIN_PREFIX)g++ #Add ccache supportendifTARGET_CXXFLAGS = $(TARGET_CFLAGS) -fno-exceptions -fno-rtti
编译cocos2d-x游戏
选择cocos2d-x根文件夹。执行:
python build/android-build.py -p 10 cpp-tests
新建一个终端窗体,执行:
ccache -s
这个命令会打印出ccache状态,例如以下:
cache directory /Users/heliclei/.ccacheprimary config /Users/heliclei/.ccache/ccache.confsecondary config (readonly) /usr/local/etc/ccache.confcache hit (direct) 13588cache hit (preprocessed) 11145cache miss 696called for link 1called for preprocessing 14preprocessor error 1can't use precompiled header 129no input file 5files in cache 32222cache size 5.4 GBmax cache size 30.0 GB
假设缓存的快速缓存命中(cache hit)和缓存大小(cache size)均为0,这就表示ccache没有执行,我们必须从新检查配置。
在Xcode中部署
配置Xcode(5.1)的ccache环境有点麻烦。
我确实能调用ccache。但貌似没有添加编译速度。⊙﹏⊙b汗。
假设你有好的方法解决问题。请到github上为本篇教程提交pr!只是我们还是看看设置方法:
首先,我们加入2个自己定义宏(user-defined macros)到cocos2d_libs的编译选项中:
CC=$(SOURCE_ROOT)/../tools/xcode_ccache_wrapperLDPLUSPLUS=$(DT_TOOLCHAIN_DIR)/usr/bin/clang++
然后,我们须要在$(COCOS2dX_ROOT)/tools/路径下创建名为xcode_ccache_wrapper的脚本:
#!/bin/bashexport CCACHE_CPP2=yesexport CCACHE_LOGFILE=~/Desktop/ccache.logexec /usr/local/bin/ccache /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Qunused-arguments "$@"
设置完毕。我们就能够快乐的在xcode中编译了!
打开ccache.log能够查看cache工作状态。
但问题是。加入cache后。我mbp的Xcocde依然没有提升编译速度。有可能是我使用的脚本不对,所以,假设你看到本章节,并知道我的问题出在哪,请到github中提交pr。修正我的错误。并造福广发开发人员哦!!