Quando usare CMake clean / configure? edit
CMake memorizza nella cache diverse informazioni nel file CMakeCache.txt
. Si tratta ad esempio di directory in cui sono stati trovati pacchetti specifici e definizioni passate usando -D
.
Alcuni esempi quando si desidera utilizzare --cmake-clean-cache
:
- un pacchetto trovato in precedenza dovrebbe essere cercato di nuovo poiché vuoi che venga trovato/usato da una posizione diversa
- hai passato una definizione prima della quale non vuoi più essere impostato andando avanti
CMake esegue automaticamente il passaggio di configurazione quando un qualsiasi file CMake incluso è cambiato. Ma a volte la tua logica dipende da stati/file aggiuntivi/esterni e hai bisogno di CMake per eseguire nuovamente il passaggio di configurazione. (Ci sono modi per dire a CMake che la modifica di uno specifico file non CMake dovrebbe innescare una riconfigurazione.) Quindi se hai bisogno del passaggio di configurazione per eseguire di nuovo ma CMake non lo fa automaticamente puoi toccare e includere il file CMake o semplicemente passare --cmake-force-configure
.
Un caso in cui potresti voler richiamare make clean
è quello di ricontrollare se il codice ha avvisi del compilatore. Una volta che un file sorgente è stato compilato, in genere non viene ricompilato fino a quando non viene modificato (o qualsiasi intestazione inclusa)). Su quella prima build potresti vedere un avviso del compilatore ma su build consecutive (supponendo che i file non abbiano modifiche) non vedrai più l’avviso del compilatore. Passare --cmake-clean-first
è un buon modo per garantire che tutti i file vengano ricompilati.
A volte la directory di compilazione contiene uno stato aggiuntivo delle build precedenti che potrebbe influire sulle build successive (ad esempio una versione precedente del pacchetto ha creato alcuni file nella directory di compilazione). Quelli non verrebbero ripuliti e potrebbero influenzare le build seguenti anche dopo che la logica che li crea è stata rimossa. Quindi questo sarebbe un caso in cui l’eliminazione dell’intera directory build
sarebbe d’aiuto.
Un altro caso che consiglierei di eliminare la directory build
è quando ti imbatti in un problema che non capisci. È anche per riprodurre un problema usando una nuova build prima di segnalarlo in un ticket. Iniziare con una nuova build potrebbe risolvere qualsiasi stato imbarazzante si sia accumulato nel tempo / in base a ciò che è stato fatto in passato.
Se si dispone di ccache
impostare una ricostruzione completa non è così costosa dal momento che molti degli artefatti di build sono stati memorizzati nella cache prima, quindi di solito non ci vorrà tutto il tempo per una nuova build.