¿Cómo acelerar el tiempo de compilación de mi proyecto C ++ habilitado para CMake?

Me encontré con varias preguntas SO sobre aspectos específicos de la mejora del tiempo de respuesta de los proyectos C ++ habilitados por CMake últimamente (como"¿A qué nivel debo distribuir mi proceso de compilación?" o"cmake rebuild_cache parasólo un subdirectorio?), Me preguntaba si hay una guía más general que utilice las posibilidades específicas que CMake ofrece. Si probablemente no hay optimización de tiempo de compilación multiplataforma, estoy principalmente interesado en los enfoques basados en Visual Studio o GNU también en cadena.

Y ya conozco e invierto en las áreas generalmente recomendadas para acelerar las compilaciones de C ++:

Cambiar / Optimizar / ajustar la cadena de herramientas

Optimice su base de código / arquitectura de software (por ejemplo, reduciendo las dependencias y utilice subproyectos bien definidos - pruebas unitarias)

Invierta en un mejor hardware (SSD, CPU, memoria)

como recomendadoaquí, aquí oaquí. Entonces mi enfoque en esta pregunta está en el primer punto.

Además, conozco las recomendaciones que se encuentran en el Wiki de CMake:

CMake: construyendo con todos tus núcleosConsejos de rendimiento de CMake

El primero solo maneja los conceptos básicos (creación paralela), el segundo maneja principalmente cómo acelerar el análisis de archivos CMake.

Solo para hacer esto un poco más concreto, si tomo mi ejemplo CMake deaquí con 100 bibliotecas usando MSYS / GNU obtuve lo siguientetime resultados de la medición:

$ cmake --version
cmake version 3.5.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).

$ time -p cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
-- Configuring done
-- Generating done
-- Build files have been written to: [...]
real 27.03
user 0.01
sys 0.03        

$ time -p make -j8
...
[100%] Built target CMakeTest
real 113.11
user 8.82
sys 33.08

Por lo tanto, tengo un total de ~ 140 segundos y mi objetivo, para este ejemplo ciertamente simple, sería reducir esto a aproximadamente el 10-20% de lo que obtengo con las configuraciones / herramientas estándar.

Respuestas a la pregunta(2)

Su respuesta a la pregunta