2011-03-24 13 views

risposta

5

Si sta creando a.txt tramite una catena di regole implicite (in questo caso regole implicite definite dall'utente). Quindi considera foo.log un intermediate file e lo elimina quando ha raggiunto il suo scopo. È possibile ignorare questo comportamento dichiarando foo.log un bersaglio secondario:

.SECONDARY: foo.log 
+1

. SECONDARIO:% .log # non funziona, cosa devo fare per rendere generale la regola? –

+5

Se vuoi che tutte le sostanze intermedie rimangano, dichiara semplicemente un obiettivo di .SECONDARY: senza dipendenze. In alternativa, è possibile utilizzare il carattere jolly con. PRECEDENTE. vale a dire. PRECEDENTE:% .log – Sean

+1

@Sean: Strano che il carattere jolly funzioni con PRECIOUS, ma non con SECONDARY ... – Beta

22

Per impostazione predefinita, GNU make rimuove i file intermedi. Poiché% .txt dipende da% .log, make vuole rimuovere il file .log. Per evitare questo comportamento, contrassegnali come preziosi con .PRECIOUS o .SECONDARY.

.PRECIOUS: foo.log 

Inoltre, è possibile fare in modo che nessun file intermedi vengono mai rimossi utilizzando .SECONDARY senza dipendenze.

.SECONDARY: 

Vedere la sezione this del manuale di GNU make.

Problemi correlati