Using ccache
============

[ccache](http://ccache.samba.org/manual.html) is available in many
systems, and can dramatically improve compilation times. In particular
if we are constantly switching between different branches.

On Ubuntu, we can install ccache by executing

    sudo apt-get install ccache

Using ccache with g++
---------------------

Then, we can create a simple script that invokes ccache with our
favorite C++ 11 compiler. For example, we can create the script
`~/bin/ccache-g++` with the following content:

    #!/bin/sh
    ccache g++ "$@"

Then, we instruct cmake to use `ccache-g++` as our C++ compiler

    cmake -D CMAKE_BUILD_TYPE=Debug -D CMAKE_CXX_COMPILER=~/bin/ccache-g++ ../../src

We usually use Ninja instead of make. Thus, our cmake command
line is:

    cmake -D CMAKE_BUILD_TYPE=Debug -D CMAKE_CXX_COMPILER=~/bin/ccache-g++ -G Ninja ../../src

Using ccache with clang++
-------------------------

To use ccache with clang++, create the script ``~/bin/ccache-clang++``
with the following content:

    #!/bin/sh
    ccache clang++ -Qunused-arguments -fcolor-diagnostics "$@"

 - ``-Qunused-arguments`` option is used to suppress "clang: warning:
   argument unused during compilation:" warning.
 - ``-fcolor-diagnostics`` option is used to enable clang's colored
   diagnostic messages.

Reference: http://petereisentraut.blogspot.com/2011/05/ccache-and-clang.html