Optymalizacje budowania w Waszych projektach

0

"Obganiacie" wszystko multithreadingiem i prekompilowanymi nagłówkami? Czy macie może jakąś bardziej wymyślną konfigurację opartą na czymś podobnym do increadibuild albo fastbuild z buforowaniem i redystrybucją?

Ostatnio popełniłem przydługawy wpis na mikroblogu gdzie na przykładzie mojego hobbystycznego projektu pisałem o skracaniu czasu budowania gdy nie mamy lub nie chcemy mieć w projekcie skomplikowanych narzędzi do budowania. W moim obecnym, komercyjnym projekcie na razie ograniczamy się do multithreadingu i prekompilowanych nagłówków i jestem ciekaw jakie podejście do czasów kompilacji mają inne firmy, poświęca się u Was na to w ogóle czas czy nikt nie dotyka tematu do momentu aż stanie się większym problemem?

3

https://github.com/Kitware/CMake - niewielka przeróbka i make wysyła źródło do kompilacji również do innych komputerów.
Czyli kompilacja rozproszona. DCOM

4

Tylko ccache i sensowne (ale nie nadmierne) wykorzystanie forward-deklaracji. Linkowanie to najdłuższy etap budowy projektu.

Za jakiś czas planuję zacząć implementację modułów.

4

Include What You Use - potrafi wyczyścić pliki nagłówkowe, że różnica jest spora. W poprzedniej firmie zyskaliśmy w ten sposób 50% czasu.
Generalnie forward declaration, gdzie tylko się da.

Nie weryfikowałem, ale pilnowanie, by domyślne implementacje destruktorów, były generowane w pojedynczym pliku źródłowym też podobno pomaga.

Nadchodzi C++20 i moduły. To powinno znacznie przyspieszyć proces budowania.

2

Ja w dużej mierze stosuję połączenie ccache + icecc jeśli mam kilka maszyn dostępnych.

0

Nie stosuję żadnych dodatkowych rozwiązań, póki co make -j mi wystarczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1