Nous utilisons actuellement un outil de ligne de commande unique pour construire notre produit sur Windows et Linux.Comment fusionner plusieurs fichiers PDB?
Si loin fonctionne bien, ce qui nous permet de construire à partir de la source et avec des dépendances plus fines que ce que notre système de construction précédent a permis. Cela nous achète de grandes capacités de construction incrémentielles et parallèles.
Pour décrire brièvement le processus de construction, nous obtenons l'habituel:
.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
Le msvc C/C++ supporte de manière adéquate.
Récemment, le besoin de construire quelques bibliothèques statiques a émergé. D'après ce que nous avons recueilli, le processus de construction d'une bibliothèque statique est:
multiple .cpp -- cl.exe --> multiple .obj and a single .pdb
multiple .obj -- lib.exe --> a single .lib
Le pdb unique signifie que cl.exe
ne doit être exécutée une fois pour toutes les sources de Cpp. Cette seule exécution signifie que nous ne pouvons pas paralléliser la construction de cette bibliothèque statique. C'est vraiment malheureux.
Nous avons étudié un peu plus loin et selon la documentation (et les options de ligne de commande disponibles):
cl.exe
ne sait pas comment construire des bibliothèques statiqueslib.exe
ne sait pas comment construire pdb fichiers
Est-ce que quelqu'un sait un moyen de fusionner plusieurs fichiers PDB? Sommes-nous condamnés à avoir des constructions lentes pour les bibliothèques statiques? Comment les outils comme Incredibuild fonctionnent-ils autour de ce problème?
Vous pouvez toujours placer votre code sur un lecteur SSD. Les constructions seront rapides comme l'éclair. –
Je suis en état de conduire sur mon stylebook. Cela aide, mais la liaison est liée à l'E/S, la compilation est liée à l'UC. –