Uso il flag -MM
in GCC per generare dipendenze makefile per oggetti. Il makefile appare brevemente in questo modo:Percorso generazione dipendenza GCC makefile
-include autodep
...
$(TARGET): build $(OBJECTS)
$(CC) -shared -o [email protected] $(OBJECTS)
$(CC) -MM $(SOURCES) > autodep
Le sorgenti si trovano nella cartella del src
. Tuttavia, il file autodep
conterrà gli obiettivi oggetto senza il loro percorso relativo:
foo.o: src/foo.c src/foo.h
bar.o: src/bar.c src/bar.h src/baz.h
Come non li ho trasformarli in questo:
src/foo.o: src/foo.c src/foo.h
src/bar.o: src/bar.c src/bar.h src/baz.h
?
Ho provato a utilizzare il flag -MT
, ma sembra eliminare completamente gli obiettivi degli oggetti.
Grazie! Io uso il ciclo 'foreach', e il contenuto di' autodep' ora è corretto. Ma in realtà non sembra funzionare. Usando l'esempio della domanda, se cambio 'src/bar.h' ed eseguo' make', ho appena ottenuto make: \ 'src/foo.o 'è aggiornato'. –
Risolto mettendo il '-include' dopo' all: '. –