Attualmente stiamo utilizzando un unico strumento da riga di comando per creare il nostro prodotto su Windows e Linux.Come si uniscono più file PDB?
Si va benissimo, permettendoci di costruire fuori dalla sorgente e con dipendenze più fini di quelle consentite da qualsiasi nostro precedente sistema di costruzione. Questo ci porta grandi capacità di build incrementali e parallele.
Per descrivere brevemente il processo di compilazione, si ottiene la solita:
.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
Il msvc C/C++ supporta adeguatamente.
Recentemente è emersa la necessità di creare alcune librerie statiche. Da quello che abbiamo raccolto, il processo per costruire una libreria statica è:
multiple .cpp -- cl.exe --> multiple .obj and a single .pdb
multiple .obj -- lib.exe --> a single .lib
Il singolo PDB significa che cl.exe
deve essere eseguito solo una volta per tutte le fonti cpp. Questa singola esecuzione significa che non possiamo parallelizzare la build per questa libreria statica. Questo è davvero sfortunato.
Abbiamo studiato un po 'oltre e secondo la documentazione (e le opzioni della riga di comando disponibili):
cl.exe
non sa come costruire librerie statichelib.exe
non sa come costruire PDB file
Qualcuno conosce un modo per unire più file PDB? Siamo destinati ad avere build lente per le librerie statiche? Come fanno gli strumenti come Incredibuild a risolvere questo problema?
È sempre possibile inserire il codice su un'unità a stato solido. Le costruzioni saranno velocissime. –
Sono su un disco a stato solido sul mio stylebook. Aiuta, ma il collegamento è legato all'IO, la compilazione è legata alla CPU. –