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 versions 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 aurait pesé dessus, mais je l'avais raté si c'était le cas.
/project/src/bin/release
, ou vraiment tous les fichiers intermédiaires et de sortie dans/project/src
? Ce dernier peut être en effet un gâchis s'il y a plus d'une dizaine de fichiers sources, le premier est ok.main.cpp
étant initialement au niveau supérieur de votre projet, il crée toujours un répertoire de construction cmake distinct de votre source à ce niveau supérieur. Je crois que MSVS est similaire à Clion à cet égard également.Réponses:
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).
la source