Posted at

ccacheを導入してC++のコンパイルを最適化

More than 1 year has passed since last update.

gitとかでブランチ移動したあと、特に変更もしていないファイルがコンパイルされるのがとってもうざかったので、導入してみた


環境


  • macOS Sierra 10.12.2

  • xcode 8.2

  • cocos2d-x 3.13.1


インストール

まずccacheをbrewで導入する(brewの導入方法)

$ brew install ccache

cocosとかで開発してるとすぐキャッシュが圧迫されるので、バッファをしっかりとっておく

$ ccache -M 20G


Xcode

ccacheを実行するラッパースクリプトを作成(ccache_wrapper)

$ sudo vi /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ccache_wrapper

----------------------------------
#!/bin/bash

which ccache
if [ "$?" -eq 0 ]; then
export CCACHE_SLOPPINESS=pch_defines,time_macros
exec `which ccache` /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Qunused-arguments "$@"
else
exec /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Qunused-arguments "$@"
fi
----------------------------------

$ sudo chmod 755 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ccache_wrapper

ツールを作成したら、BuildSettingsで以下のボタンを押して

以下のUser-Definedを追加する


  • CC : $(DT_TOOLCHAIN_DIR)/usr/bin/ccache_wrapper

  • LDPLUSPLUS : $(DT_TOOLCHAIN_DIR)/usr/bin/clang++

Xcode導入完了


Android

特にbuild.gradleとかmanifestをいじる必要はなし

以下をログインシェルのprofileに追加するのみ

$ vi ~/.zprofile

----------------------------------
# ccache
export USE_CCACHE=1
export NDK_CCACHE=`which ccache`
export CCACHE_CPP2=yes
export CCACHE_COMPILERCHECK=content
----------------------------------

$ . ~/.zprofile


確認方法

ccacheがちゃんと動いているか、表面上よくわからんためビルド中に以下のコマンドを叩く

$ ccache -s

cache sizeがどんどん膨れて入れば導入成功