怎样使用 CCache 进行 cocos2d-x 编译加速
https://github.com/chukong/cocos-docs/blob/master/manual/framework/native/v3/ccache-speed-up/zh.md
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.git
cd ccache
./autogen.sh
./configure
make
make install
cp /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=1
export 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)
else
TARGET_CC = ccache $(TOOLCHAIN_PREFIX)gcc #Add ccache support
endif
TARGET_CFLAGS =
TARGET_CONLYFLAGS =
ifneq ($(findstring c++-analyzer,$(CXX)),)
TARGET_CXX = $(CXX)
else
TARGET_CXX = ccache $(TOOLCHAIN_PREFIX)g++ #Add ccache support
endif
TARGET_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/.ccache
primary config /Users/heliclei/.ccache/ccache.conf
secondary config (readonly) /usr/local/etc/ccache.conf
cache hit (direct) 13588
cache hit (preprocessed) 11145
cache miss 696
called for link 1
called for preprocessing 14
preprocessor error 1
can't use precompiled header 129
no input file 5
files in cache 32222
cache size 5.4 GB
max 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_wrapper
LDPLUSPLUS=$(DT_TOOLCHAIN_DIR)/usr/bin/clang++
然后,我们须要在$(COCOS2dX_ROOT)/tools/路径下创建名为xcode_ccache_wrapper的脚本:
#!/bin/bash
export CCACHE_CPP2=yes
export CCACHE_LOGFILE=~/Desktop/ccache.log
exec /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。修正我的错误。并造福广发开发人员哦!!
怎样使用 CCache 进行 cocos2d-x 编译加速的更多相关文章
- 预编译加速编译(precompiled_header),指定临时文件生成目录,使项目文件夹更干净(MOC_DIR,RCC_DIR, UI_DIR, OBJECTS_DIR),#pragma execution_character_set("UTF-8")"这个命令是在编译时产生作用的,而不是运行时
预编译加速编译 QT也可以像VS那样使用预编译头文件来加速编译器的编译速度.首先在.pro文件中加入: CONFIG += precompiled_header 然后定义需要预编译的头文件: PREC ...
- ! cocos2d 预编译重复
由于预编译文件重复,导致下面的类没有被编译,所以,在写代码的时候也没有提示还报错,说LoadingScene没有定义. #ifndef __HELLOWORLD_SCENE_H__ #define _ ...
- win7(x64)下安装cocos2d并编译安卓项目
好吧,不为啥,就是如题. win7 x64 脑袋内存比较小,说不定明儿就忘了,今天记录一下. 没有什么经验,所有步骤基本都是百度出来的,这里边操作边记录,为了保护原创作者,这里我都附上我查找的链接. ...
- android studio 编译加速
1. http://www.52codes.net/article/658.html 2.http://my.oschina.net/sammy1990/blog/388846 3.http://st ...
- Nginx SPDY Pagespeed模块编译——加速网站载入
在看<Web性能权威指南>的时候,看到了SPDY这货,于是便开始折腾起了这个了,也顺便把pagespeed加了进去. Nginx SPDY 引自百科~~ SPDY(读作“SPeeDY”)是 ...
- Ceph编译加速的小技巧
总结了几个小技巧,用于在ceph编译过程中,能够更快一点 修改clone的地址 git clone https://github.com/ceph/ceph.git 可以修改成 git clone g ...
- Gradle 编译加速
参考:http://www.jianshu.com/p/200d55b4d40a http://blog.isming.me/2015/03/18/android-build-speed-up/ ht ...
- ccache高速编译工具
ccache的主页:http://ccache.samba.org distcc的主页:http://distcc.samba.org 1.背景: 在处理一些规模相对较大的工程时,编译花费的时间可能会 ...
- ccache - 让Xcode编译速度飞起来
今天来介绍一个小工具ccache,其可以提高xcode的编译速度.说起缘由,是因为我的苹果电脑配置比较低,而每次开发调试或测试打包都需要编译工程,虽然项目工程代码量不算大,但是编译的时间还是很长,尤其 ...
随机推荐
- (Go)03.go类型
1.1 变量Go 是静态类型语⾔言,不能在运⾏行期改变变量类型.使⽤用关键字 var 定义变量,⾃自动初始化为零值.如果提供初始化值,可省略变量类型,由编译器⾃自动推断. var x int var ...
- javascript设计模式-继承
javascript继承分为两种:类式继承(原型链.extend函数).原型式继承(对继承而来的成员的读和写的不对等性.clone函数). 类式继承-->prototype继承: functio ...
- 【React Natvie】React-native-swiper的安装和配置【ES6】
react-native-swiper轮播图,是我们开发中特别常见的效果,首先感谢编写react-native-swiper的大神,让我们方便了很多.这个框架主要是用来做轮播图,焦点图等,内置了各种样 ...
- HBase学习----windows10下使用eclipse搭建HBase的开发环境
以下是我搭建HBase开发环境的一些心得(windows10) 0.安装JDK和eclipse和一个可用的HBase. 这步是最基础的,在此就不赘述了 1.创建一个java项目: 基础问题,不赘述. ...
- web拼图错误分析
老师要求用web制作一个拼图游戏. 发现的问题:点击随机生成拼图的按钮后,打乱的图片会出现无法还原的情况. 发现过程:每次生成一个拼图后会测试它怎么拼回去,结果发现有时候拼不回去. 数学原理:如果两个 ...
- 如何解决Android 5.0以上出现的警告:Service Intent must be expli
有些时候我们使用Service的时需要采用隐私启动的方式,但是Android 5.0一出来后,其中有个特性就是Service Intent must be explitict,也就是说从Lollip ...
- Splash Screen(短时间弹出框,信息显示一次)
原文引自codeproject site, http://www.codeproject.com/Articles/6511/Transparent-Splash-Screen 1.A splash ...
- js 目录树
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- C# model代码生成器
using System.Collections.Generic; using System.Text; public class Class1 { //传递 1.表名 2.列名 3.类型 publi ...
- 优动漫PAINT如何打开图形文件
优动漫PAINT也就是我们常说的clip studio paint(CSP)的中文版本,在优动漫PAINT软件中打开文件的方式有很多,您可以直接拖拽至优动漫PAINT界面或者文档窗口,也可以执行文件菜 ...