博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样使用 CCache 进行 cocos2d-x 编译加速
阅读量:5051 次
发布时间:2019-06-12

本文共 3093 字,大约阅读时间需要 10 分钟。

 

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。修正我的错误。并造福广发开发人员哦!!

 

转载于:https://www.cnblogs.com/wzjhoutai/p/6962456.html

你可能感兴趣的文章
Java设计模式之原型模式
查看>>
Spring学习(四)-----Spring Bean引用同xml和不同xml bean的例子
查看>>
哲理故事与管理之道(20)-用危机激励下属
查看>>
关于源程序到可运行程序的过程
查看>>
wepy的使用
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
面向对象1
查看>>
在ns2.35中添加myevalvid框架
查看>>
【贪心+DFS】D. Field expansion
查看>>
为什么要使用href=”javascript:void(0);”
查看>>
二进制文件的查看和编辑
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
IOS-每个程序员的编程之路上都应该看这11本书
查看>>
自定义tabbar(纯代码)
查看>>
extjs fieldset 和 radio
查看>>
小程序底部导航栏
查看>>
ibatis学习笔记
查看>>