Comment faire pour accélérer les Temps de Compilation de mon CMake activé Projet C++?

Je suis tombé sur plusieurs questions concernant des aspects spécifiques de l'amélioration du délai de CMake permis C++ projets ces derniers temps (comme "À quel niveau dois-je répartir mes processus de génération?" ou "cmake rebuild_cache pour que un sous-répertoire?"), je me demandais si il n'y a plus une orientation générale en utilisant les possibilités spécifiques de CMake offre. Si il n'y a probablement pas de croix-plate-forme de compilation à l'optimisation du temps, je m'intéresse principalement dans Visual Studio ou GNU toochain approches fondées.

Et je suis déjà au courant et d'investissement dans le généralement recommandé dans les zones à vitesse C++: les versions de

  1. Modifier/Optimiser/affiner le réglage de la chaîne d'

  2. Optimiser votre base de code/l'architecture logicielle (e.g en réduisant les dépendances et l'utilisation bien défini de sous-projets - tests unitaires)

  3. Investir dans un meilleur matériel (SSD, PROCESSEUR, mémoire)

comme recommandé ici, ici ou ici. Mon point de focalisation dans cette question est sur le premier point.

Plus je connais les recommandations pour être trouvé dans CMake Wiki:

L'ancien juste gère les bases (parallèle à faire), le plus tard poignées surtout comment la vitesse d'analyse de fichiers CMake.

Juste pour rendre tout ceci un peu plus concret, si je prends mon CMake exemple de ici avec 100 bibliothèques à l'aide de MSYS/GNU j'ai eu la suivante time les résultats de la mesure:

$ 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

J'ai donc un total de ~140 secondes et mon objectif pour cette certes très simple exemple - serait d'obtenir cette baisse à environ 10 à 20% de ce que j'obtiens avec les paramètres standard/outils.

InformationsquelleAutor Florian | 2016-05-19