zoukankan      html  css  js  c++  java
  • 怎样使用 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。修正我的错误。并造福广发开发人员哦!!

  • 相关阅读:
    如何用ST-LINK给STM32下载HEX文件
    快恢复二极管和肖特基二极管的区别和是否能够替代使用?
    Python环境变量配置
    IAP笔记
    如何将24位RGB颜色转换16位RGB颜色
    内网外网同时使用
    bootstraptable 服务端分页问题
    weblogic奇葩问题
    SSM框架
    java通过poi操作excel
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6962456.html
Copyright © 2011-2022 走看看