Wie die Geschwindigkeit der Kompilierung von meinen CMake-fähigen C++ - Projekt?

Stieß ich auf mehrere Fragen in Bezug auf bestimmte Aspekte der Verbesserung der turn-around-Zeit von CMake-fähigen C++ - Projekte in letzter Zeit (wie "Auf welcher Ebene soll ich verteilen meinem build-Prozess?" oder "cmake rebuild_cache für nur - ein Unterverzeichnis?"), ich Frage mich, ob es eine mehr Allgemeine Hinweise die Nutzung der spezifischen Möglichkeiten CMake bietet. Wenn es wahrscheinlich keine cross-Plattform-Kompilierung, Optimierung, ich bin hauptsächlich daran interessiert, die Visual Studio oder GNU toochain basierte Ansätze.

Und ich bin mir schon bewusst, und investieren in der Regel empfohlen, die Bereiche um die Geschwindigkeit von C++ baut:

  1. Änderung/Optimierung/Feineinstellung der toolchain

  2. Optimieren Sie Ihre code-Basis/software-Architektur (e.g durch die Verringerung der Abhängigkeiten und nutzen, sowie definierte sub-Projekte - unit-tests)

  3. Investieren Sie in eine bessere hardware (SSD, CPU, Speicher)

wie empfohlen hier, hier oder hier. Also mein Fokus in dieser Frage ist auf den ersten Punkt.

Plus ich weiß, dass die Empfehlungen finden sich in CMake Wiki:

Erstere nur die Grundlagen behandelt (parallel machen), die später Griffen meist wie speed-up-parsing CMake-Dateien.

Nur um diese ein wenig mehr Beton, wenn ich meine CMake Beispiel aus hier mit 100 Bibliotheken mit MSYS/GNU bekam ich folgende time Messergebnisse:

$ 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

So, ich habe insgesamt ~140 Sekunden und mein Ziel, bei diesem zugegebenermaßen sehr einfachen Beispiel wäre dies bis auf etwa 10-20% von dem, was ich mit den standard-Einstellungen/tools.

InformationsquelleAutor Florian | 2016-05-19
Schreibe einen Kommentar