- For 'whole-project' compiles, limit the amount of them to the absolute minimum. Use unit tests to test fundamental functionality rather than running the whole program.
- Use a compiler that supports precompiled headers, understand how it works and use it as it's designed.
- Pay attention to your #include graph. Only include headers where they're used (i.e., in the .cpp file and not in the header where it's possible), use Cheshire cat where possible, and put as much into the precompiled header as possible.
Doing all of these things make C++ compilation bearable, but still it's a nice change when I write code in C# or 'scripting' languages and compilation times disappears. It's one of the more annoying aspects of C++, but despite it and a bunch of other nitpicks, it's still my favorite language.
https://github.com/marshray/qak/tree/
For example, my simple implementation of min and max<T>(a, b) amount to just a few lines of code. But using them instead of std::min/max means you don't have to #include <algorithm> ... a savings of 39274 LoC!
clang++ is even faster.
Visual Studio 2010 has a decent compilation speed if you use a Dos prompt.