web-dev-qa-db-fra.com

Génération en source vs génération hors source

Dans mon développement (principalement C++), j'ai longtemps adhéré à l'utilisation de builds out-of-source. Autrement dit, ma source se trouve généralement dans un /project/src répertoire et les builds vivent dans un /project/build/bin/release, /project/build/bin/debug répertoires. J'ai fait cela car il garde mes répertoires source propres des fichiers intermédiaires, j'ai un emplacement pour tous mes binaires, l'empaquetage est plus facile, le nettoyage est plus facile et le contrôle de version est plus facile. (Ai-je manqué quelque chose?)

J'hérite d'un (grand) projet maintenant qui utilise des builds en source. Quelle est la motivation de ce type de structure et quels sont ses avantages? (Je suis surtout préoccupé par les raisons de niveau technique par rapport aux types de raisons de préférence personnelle.)

J'espérais que la "conception logicielle C++ à grande échelle" de Lakos y aurait pesé, mais je l'ai raté si c'était le cas.

9
DiB

Après avoir demandé à la communauté ici et poursuivi ma recherche en ligne, je n'ai pas été en mesure de trouver une justification technique importante pour l'utilisation de builds en source. (Il existe de nombreux exemples de raisons de les éviter.)

La seule raison objective que j'ai trouvée (comme mentionné dans le commentaire de @BartvanIngenSchenau) est que les builds en source sont parfois par défaut par un système de build. En raison de cette valeur par défaut, ils ne nécessitent aucune surcharge dans le temps de configuration, ce qui peut être parfaitement acceptable pour un très petit projet (ou scratch).

8
DiB