Esiste una regola generale per quando è necessario utilizzare "make clean" invece di "make"?

11

Sto scrivendo un programma con più file in questo momento, e apparentemente eseguire solo "make" (come si dovrebbe pensare intuitivamente debba essere fatto nella maggior parte delle situazioni) per qualche ragione causa il fallimento del mio programma. Immagino di poter fornire più dettagli del problema, ma l'importante è che venga eseguito quando si usa 'make clean'. Quindi mi chiedevo se qualcuno conoscesse la regola generale per eseguire "make clean" invece di "make"

    
posta Dark Templar 23.09.2011 - 03:26
fonte

4 risposte

17

Si esegue make clean in due situazioni: quando si vuole impacchettare il codice sorgente (e quindi non è necessario / volere gli oggetti creati) OPPURE quando si ha motivo di ritenere che gli oggetti costruiti siano negativi.

Nel tuo caso, stai usando 'make clean' per correggere un problema che è probabilmente il risultato di un Makefile bacato. Qualcosa in là non sta ricompilando quando dovrebbe, e ciò sta facendo sì che l'output binario sia cattivo.

Ci sono molte ragioni che potrebbero accadere, a seconda della complessità del tuo progetto, e di come hai usato make, ma il succo è: hai bisogno di dedicare un po 'di tempo al debug del tuo Makefile.

    
risposta data 23.09.2011 - 03:34
fonte
8

Sono d'accordo con la risposta di Michael Kohne in generale. Vorrei aggiungere che è necessario leggere i documenti di installazione per sapere cosa fa realmente "make clean". Ci possono essere diversi livelli di pulizia che potrebbe essere necessario utilizzare, come "make realclean" e "make distclean". Ci sono convenzioni informali per questi, ma niente scolpito nella pietra.

    
risposta data 23.09.2011 - 05:24
fonte
5

Capisco che questo è il tuo progetto, quindi è il tuo makefile . Il mio obiettivo è avere make sempre produrre una build corretta, se è possibile produrne una. Se make clean è necessario per recuperare da qualche condizione, allora a mio parere il makefile è sbagliato e dovrebbe essere corretto. Se le tue dipendenze sono state calcolate correttamente, un semplice make dovrebbe ricompilare tutto ciò che deve essere ricompilato.

    
risposta data 24.09.2011 - 04:48
fonte
1

Avrei eseguito "make clean" prima di una build notturna. In tal caso, il tempo aggiuntivo necessario per eseguire una compilazione completa probabilmente non avrà molta importanza, ma la sicurezza aggiuntiva che otterrai dal verificare che tutto sia nella versione corretta è probabilmente la pena.

    
risposta data 25.09.2011 - 20:43
fonte

Leggi altre domande sui tag