2010-07-24 9 views
10

Non sono sicuro che sia gmake o gcc che non capisco qui.effettua l'eliminazione dei file di dipendenza

Sto utilizzando le opzioni -MM e -MD per generare regole di dipendenza per il framework Test unità che sto utilizzando. In particolare:

$(TEST_OBJ_DIR)/%.d: $(TEST_SRC_DIR)/%.cpp 
    @$(CPPC) -MM -MD $< -o [email protected] 
    @sed -i -e 's|\(.*\)\.o:|$(OBJ_DIR)/\1.o $(TEST_OBJ_DIR)/\1.d $(TEST_OBJ_DIR)/\1.o:|' [email protected] 

-include $(TEST_DEP_FILES) 

Quando eseguo make, dopo che tutti i binari sono collegati (correttamente), vedo la seguente riga (inspiegabile) in più prima di fare uscite

rm test/obj/dice.d test/obj/regex.o test/obj/inventoryContainer.d test/obj/color-string.d test/obj/dice.o test/obj/inventoryContainer.o test/obj/color-string.o test/obj/regex.d 

Da dove è che rm comando venire? L'unico posto - ovunque - che ho un comando rm nel mio makefile è nella direttiva pulita

test-clean: 
    rm -f $(TEST_BIN_FILES) 
    rm -f $(TEST_OBJ_DIR)/*.{a,d,o} 

Tutte le idee?

risposta

10

make creerà automaticamente intermediate files se necessario per unire due regole insieme, ma le eliminerà alla fine della generazione. È possibile utilizzare il .PRECIOUS bersaglio speciale per evitare che la loro rimozione

+1

Oppure. SECONDARIO ... – reinierpost

+0

@rei Ah, sì. Sapevo che '.SECONDARY' costringeva a trattare i file come intermedi, ma non mi rendevo conto che aveva anche smesso di cancellarli –

0

Un'opzione utile per il debug questo tipo di problemi è l'interruttore -n:

make -n {TARGET} 

Vi mostrerà i comandi che sarebbe correre ma ha vinto li eseguono davvero. Questo ti consente di vedere quali regole vengono attivate, ma non ti fornisce tutto l'output extra che rende difficile la diagnosi del problema.

Il flag di debug -d può essere utile ma assicurati di eseguirlo in un contesto in cui è possibile scorrere facilmente, riceverai un sacco di output. Di solito uso la modalità shell di emacs perché ha una buona funzionalità di ricerca e salva il buffer.

Problemi correlati