Ну, может быть, констатирую очевидное: вам нужно либо заставить cmake создать относительные пути, либо изменить ccache, чтобы считать записи в кэше совпадающими, если единственная разница - абсолютный путь.
Я изменил свою копию ccache, чтобы игнорировать параметр -pipe
при вычислении хэша (который используется для именования записей кэша); поскольку эта опция не влияет на вывод компилятора, только на его скорость. Может быть, было бы не так сложно заставить его убрать начальные / home / * / пути при вычислении хеша.