Wie gehst du mit großen Abhängigkeiten in Boost um?

8

Boost ist eine sehr große Bibliothek mit vielen Abhängigkeiten - die auch eine lange Zeit zum Kompilieren benötigt (was für mich eine Verlangsamung unserer CruiseControl Reaktionszeit).

Boost :: Regex und boost :: format sind die einzigen Boost-Komponenten, die ich verwende.

Gibt es eine einfache Möglichkeit, nur die Teile der Boost-Funktion zu extrahieren, die für eine bestimmte Boost-Unterbibliothek erforderlich sind, um Compilations schneller zu machen?

EDIT: Um die Frage zu beantworten, warum wir Boost neu aufbauen wollen ...

  1. Das Parsen der Boost-Header-Dateien dauert noch lange. Ich vermute, wenn wir nur das extrahieren könnten, was wir brauchen, würde das Parsen auch schneller passieren.
  2. Unser CruiseControl-Setup baut alles von Grund auf neu. Dies erleichtert auch die Aktualisierung der Boost-Version, die wir verwenden. Aber ich werde untersuchen, ob wir unseren Build-Prozess ändern können, um zu sehen, ob unsere Build-Maschine Boost aufbauen kann, wenn Änderungen auftreten und diese Änderungen an SVN übertragen. (Meine Firma hat eine Richtlinie, dass alles, was aus der Tür hinausgeht, auf der "Build-Maschine" aufgebaut sein muss.)
Kevin 06.10.2008, 06:42
quelle

4 Antworten

8

Als Erstes können Sie das bcp-Tool (im Unterordner tools) verwenden, um die von Ihnen verwendeten Header und Dateien zu extrahieren. Dies wird jedoch nicht mit Kompilierungszeiten helfen. Zweitens müssen Sie Boost nicht jedes Mal neu aufbauen. Erstellen Sie einfach die lib-Dateien einmal und bei jeder Versionsänderung und kopieren Sie den "stage" -Ordner zur Build-Zeit.

    
vividos 06.10.2008, 06:49
quelle
2

Sofern Sie nicht selbst die Boost-Bibliotheken patchen, gibt es keinen Grund, sie jedes Mal neu zu kompilieren, wenn Sie einen Build erstellen.

    
postfuturist 06.10.2008 06:47
quelle
1

Vorkompilierte Header sind das Wort des Tages! Fügen Sie die Boost-Header hinzu, die Sie in Ihrem vorkompilierten Header benötigen - Tada!

    
1800 INFORMATION 06.10.2008 06:49
quelle
1

Wir verwenden Boost, aber wir fügen nur Objektdateien für die Typen ein, die wir tatsächlich verwenden. Das heißt, wir bauen unsere eigene statische Bibliothek mit einer Reihe selbstgewonnener Dienstprogramme und schließen diejenigen Teile von Boost ein, die wir nützlich finden. Unser CMakeLists.txt sieht ungefähr so ​​aus (Sie sollten es in CMake laden können, wenn Sie SOURCES entsprechend anpassen.)

%Vor%     
JesperE 06.10.2008 06:51
quelle

Tags und Links