Ccache
ccache(しーきゃっしゅ)とは、各種コンパイラーが出力するオブジェクトファイルをキャッシュし、無駄なコンパイルを省くことで再コンパイルを高速化するシステムである。
ccacheによるキャッシュの判断は、ソースコードでもオブジェクトコードでもなく、プリプロセッサーの出力結果を用いているようである。
ccacheの原作者はsambaの原作者としても有名なアンドリュー・トリジェルである。
目次
対応するコンパイラー
2012年7月18日現在、ccacheがサポートしているプログラミング言語は以下のとおり。
公式サイトを見るといつの間にかObjective-CとObjective-C++が増えているという。
UNIX系OSで古くから使われる「ccコマンド」と「c++コマンド」への対応が基本となる。gccもこれらのコマンドに対するエイリアスが用意されているので特に考える必要はないと思う。
ccacheのソースコードを見ると、MinGWやVisual C++などのWindows環境への対応が試みられた形跡はあるが、2012年7月18日現在では完全体ではなく対応していないと思われる。
ライセンス
使い方
FreeBSD
portsからインストール
FreeBSDではportsが用意されている。
- devel/ccache
portsから直接インストールする場合は以下のようにする。
# cd /usr/ports/devel/ccache
# make install clean
portupgradeを使っている場合は以下のようにする。 個人的にはこちらを使っており、同時に「-p」オプションを付けることでパッケージも作っておく。
# portinstall -p devel/ccache
/etc/make.confの設定
「/etc/make.conf」を編集し、make実行時にccacheが自動発動する条件を指定しておく。
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) && !defined(NOCCACHE)
CC=/usr/local/libexec/ccache/world-cc
CXX=/usr/local/libexec/ccache/world-c++
.endif
環境変数の設定:cshの場合
シェルにcshまたはtcshを使っている場合は「/root/.cshrc」を編集しccache関連の環境変数を設定しておく。キャッシュやログの保存場所や適宜設定すること。
setenv PATH /usr/local/libexec/ccache:$PATH
setenv CCACHE_PATH /usr/bin:/usr/local/bin
setenv CCACHE_DIR /var/tmp/ccache
setenv CCACHE_LOGFILE /var/log/ccache.log
上記の設定が完了したのち、sourceコマンドで環境変数を更新する。
# source /root/.cshrc
環境変数の設定:zshの場合
シェルにzshを使っている場合は「/root/.zshrc」を編集しccache関連の環境変数を設定しておく。キャッシュやログの保存場所や適宜設定すること。
export PATH=/usr/local/libexec/ccache:$PATH
export CCACHE_PATH=/usr/bin:/usr/local/bin
export CCACHE_DIR=/var/tmp/ccache
export CCACHE_LOGFILE=/var/log/ccache.log
上記の設定が完了したのち、sourceコマンドで環境変数を更新する。
# source /root/.zshrc
共通
統計情報を見る
以下のコマンドでキャッシュのヒット率などを閲覧することができる。
# ccache -s
統計情報をリセットする
以下のコマンドで統計情報をリセットすることができる。なお統計情報が消えるのであってキャッシュ自体が消えるわけではない。
# ccache -z