Wie dem Verlauf des Threads entnehmen kann, scheint es leider keine pauschale Lösung zu geben, obgleich das Interesse daran anscheinend sehr hoch ist.
Natürlich muss jeder das System finden, das für ihn am besten funktioniert. Man sollte die Vorschläge hier deshalb auch als genau solche verstehen.
Die Sourcen in jeweils mit in die Versionsverwaltung mit aufzunehmen und bei jedem erstellen einer Programmversion mit zu kompilieren halte ich, zumindest bei uns, für nicht durchführbar, da unser Softwareprojekt schon über 2000000 Zeilen Code besitzt und das neu kompilieren der Komponentensourcen jedes mal noch mehr Zeit in Anspruch nehmen würde.
Wie Günther schon erwähnte kommt das beim Compile ja nur einmal zum tragen. Bei einem Build aber natürlich jedesmal wieder. Alternativ kann man das aber auch leicht abgewandelt handhaben: beim Update aus dem Repo (ich verwende Mercurial) wird über einen entsprechenden AfterUpdate-Hook eine einmaliges Compilieren der Bibliotheken angestoßen. Danach stehen dann die DCUs zur Verfügung. Der Hook garantiert lediglich das automatische Synchronisieren der Sourcen mit den DCUs, ansonsten kann man das auch manuell erledigen. Von einer Versionierung der DCUs selbst würde ich allerdings abraten.
Der Vorteil der Sourcen ist halt, daß sie immer mit den gleichen Compilerschaltern compiliert werden wie das Projekt selbst. Das erspart z.B. separate Verzeichnisse für die Debug-DCUs.
Natürlich kommt es auch auf den Anteil der Komponentensourcen am gesamten Code-Volumen an. Wenn zu den 2 Mio. Zeilen für eure eigenen Sourcen vielleicht nur 0.5 Mio. für Bibliotheken hinzukommt, sollte der Zeitverlust bei einem Build gerade mal 25% betragen. Sind das aber zusätzlich 4 Mio. sieht das sicher schon anders aus.
Im Übrigen kann man mit einer SSD schon einiges wieder herausholen.