Obecnie używamy jednego narzędzia wiersza poleceń, aby zbudować nasz produkt zarówno w systemie Windows, jak i Linux.Jak scalić wiele plików PDB?
Swoim działaniem ładnie się spisuje, co pozwala nam budować z zasobów źródłowych i subtelniejszymi niż to, co pozwalał nasz poprzedni system kompilacji. To daje nam świetne, równoległe możliwości budowania.
Aby opisać krótko proces kompilacji otrzymujemy zwykle:
.cpp -- cl.exe --> .obj and .pdb
multiple .obj and .pdb -- cl.exe --> single .dll .lib .pdb
multiple .obj and .pdb -- cl.exe --> single .exe .pdb
msvc C/C++ kompilator wspiera go odpowiednio.
Ostatnio pojawiła się potrzeba zbudowania kilku bibliotek statycznych. Z tego, co zebraliśmy, proces budowania statycznych biblioteki jest:
multiple .cpp -- cl.exe --> multiple .obj and a single .pdb
multiple .obj -- lib.exe --> a single .lib
Singiel .pdb oznacza, że cl.exe
powinny być wykonywane tylko raz dla wszystkich źródeł .cpp. Ta pojedyncza operacja oznacza, że nie możemy zrównoważyć kompilacji tej statycznej biblioteki. To naprawdę niefortunne.
Badaliśmy kawałek dalej i zgodnie z dokumentacją (i dostępnych opcji wiersza poleceń):
cl.exe
nie wie, jak zbudować statycznych biblioteklib.exe
nie wie, jak zbudować .pdb pliki
Czy ktoś zna sposób scalania wielu plików PDB? Czy jesteśmy skazani na powolne kompilacje dla bibliotek statycznych? W jaki sposób narzędzia takie jak Incredibuild radzą sobie z tym problemem?
Zawsze można umieścić kod na dysku SSD. Budowy będą błyskawiczne. –
Mam dysk SSD w moim stylubook. Pomaga, ale łączenie jest związane z IO, kompilacja jest związana z procesorem. –