2014-05-19 20 views

risposta

2

In molti casi le cose potrebbero andare bene se non si esegue make clean, ma non si può presumere che lo faranno.

Un esempio di come le cose potrebbero andare male: una bandiera di configurazione potrebbe aggiungere un parametro -D ad un CFLAGS variabile o DEFS, invece di definire attraverso config.h. Quest'ultimo darebbe ai tuoi file C una dipendenza su config.h che a sua volta viene rigenerato quando si esegue nuovamente configure. Ma nel primo caso, se si esegue nuovamente configure e si modifica questo flag, il set di simboli #defined nei propri file C sarà diverso, ma tali file C non verranno ricompilati.

1

Gli script configure sono progettati per essere eseguiti "fuori dall'albero". ad esempio, è possibile creare una sottodirectory build ed eseguire ../configure [options] da lì, il che (idealmente) influirà solo sulla directory build.

Se si utilizza ./configure, è necessario eseguire make clean prima di eseguire nuovamente configure - per sicurezza. Altrimenti, se sei preoccupato per gli effetti collaterali, una suite di autotools correttamente scritta dovrebbe consentire una directory di build fuori dal campo.

+0

Come sarebbe utile la directory di configurazione fuori struttura se non la si elimina e si esegue nuovamente './Configure'? Cosa sarebbe diverso? Altrimenti è un passo in più, proprio come eseguire 'make clean'. – sashoalm

+0

@sashoalm: l'esecuzione di 'make clean' o' make distclean' è in qualche modo un collo di bottiglia che richiede tempo nella vostra pipeline di sviluppo? Gli autotools sono abbastanza complessi senza cercare di prendere scorciatoie 'intelligenti', che potrebbero essere tutt'altro. –

Problemi correlati