Build in-source vs. build out-of-source


10

Nel mio sviluppo (principalmente C ++), ho aderito a lungo all'utilizzo di build out-of-source. Vale a dire, la mia fonte di solito si trova in una /project/srcdirectory e la costruisce vivere in una /project/build/bin/release, /project/build/bin/debugle directory. L'ho fatto perché mantiene le mie directory di origine pulite dai file intermedi, ho una posizione per tutti i miei binari, il packaging è più facile, la pulizia è più facile e il controllo della versione è più facile. (Mi sono perso qualcosa?)

Ora sto ereditando un (grande) progetto che utilizza build in-source. Qual è la motivazione per questo tipo di struttura e quali sono i suoi vantaggi? (Mi preoccupo maggiormente di motivi a livello di ingegneria rispetto a motivi di preferenze personali.)

Speravo che "La progettazione di software C ++ su larga scala" di Lakos avrebbe influito su di esso, ma in caso contrario mi mancava.


2
Scuse. Sto cercando "Nelle build di origine migliorare 'x'" o "aiutano a garantire 'y'" o "i test automatici possono quindi 'z'". Non un rant. In particolare, non voglio entrare in una guerra di opinioni qui!
DiB,

10
Le build in-source sono una maledizione che devi alla pigrizia del tuo predecessore. Sono terribili per tutto (controllo del codice sorgente, costruzione incrociata, ricerca del testo, ecc.) Ma sono incredibilmente facili da creare usando i makefile nudi. Mi dispiace, questo è stato un rant. Ma oggettivo .

1
Cosa intendi esattamente con build "in-source"? Qualcosa di simile /project/src/bin/release, o davvero tutti i file intermedi e di output in /project/src? Quest'ultimo può davvero essere un disastro se ci sono più di una dozzina di file sorgente, il primo è ok.
Doc Brown,

2
@Tibo, non è solo incredibilmente facile con i makefile, ma sembra essere il default anche con la maggior parte degli IDE (almeno quando ho controllato l'ultima volta qualche anno fa).
Bart van Ingen Schenau,

4
@BartvanIngenSchenau Davvero? quale IDE hai usato in questo caso? Qt non lo fa, infatti sembra mettere la build il più lontano possibile dalla fonte, Eclipse non lo fa, si potrebbe obiettare che Clion in qualche modo fa questo, ma solo come conseguenza di main.cpp essendo inizialmente al livello più alto del tuo progetto, crea comunque una directory di creazione di cmake separata dalla tua fonte a quel livello superiore. Credo che MSVS sia simile a Clion anche a questo proposito.
quando

Risposte:


9

Dopo aver chiesto alla community qui e continuato la mia ricerca online, non sono stato in grado di trovare una giustificazione ingegneristica significativa per l'utilizzo di build in-source. (Ci sono molti esempi di motivi per evitarli.)

L'unico motivo oggettivo che ho trovato (come accennato nel commento di @BartvanIngenSchenau) è che le build in-source sono talvolta predefinite da un sistema di build. A causa di questa impostazione predefinita, non richiedono costi generali nei tempi di installazione, il che può essere perfettamente accettabile per un progetto molto piccolo (o scratch).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.