How do I set up ccache?

Installation:

# Install package
sudo apt install -y ccache

# Update symlinks
sudo /usr/sbin/update-ccache-symlinks

# Prepend ccache into the PATH
echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc

# Source bashrc to test the new PATH
source ~/.bashrc && echo $PATH

Your path (at least the beginning) should look like:

/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

And g++/gcc should now point to:

which g++ gcc
/usr/lib/ccache/g++
/usr/lib/ccache/gcc

Configuration:

If you want no limit to the number of files and size of the cache:

ccache -F 0
ccache -M 0

Show cache statistics:

ccache -s

Empty the cache and reset the stats:

ccache -C -z

Usage:

Every time you call gcc or g++; ccache is called. My mistake was that I didn't delete already-compiled files. Just delete all your CMake/output files and configure/compile again.

Your ccache shouldn't be empty then. Now try a make clean and make and you'll see it is much faster than re-compiling everything thanks to the cache.


Your $PATH doesn't look correct; ccache's directory should be in there. Just run:

export PATH="/usr/lib/ccache/:$PATH"

... and try your g++ commands again. This directory is full of proxy commands that call ccache. This should work with most scripts.


If you're just calling g++ manually (not like above where you're using make), you can just prepend the command:

ccache g++ ...