Używam flagi -MM
w GCC do generowania zależności plików Makefile dla obiektów. Makefile skrócie wygląda następująco:Ścieżka generowania zależności makefile GCC
-include autodep
...
$(TARGET): build $(OBJECTS)
$(CC) -shared -o [email protected] $(OBJECTS)
$(CC) -MM $(SOURCES) > autodep
Źródła znajdują się w folderze src
. Jednak plik autodep
będzie zawierać cele obiektów bez ich ścieżki względnej:
foo.o: src/foo.c src/foo.h
bar.o: src/bar.c src/bar.h src/baz.h
Jak należy przekształcić je w ten sposób:
src/foo.o: src/foo.c src/foo.h
src/bar.o: src/bar.c src/bar.h src/baz.h
?
Próbowałem użyć flagi -MT
, ale wydaje się, że w ogóle odrzuca obiekty docelowe.
Dzięki! Używam pętli foreach, a zawartość 'autodep' jest teraz poprawna. Ale tak naprawdę nie działa. Korzystając z przykładu z pytania, jeśli zmienię 'src/bar.h' i uruchom' make', po prostu otrzymam 'make: \' src/foo.o 'jest aktualny'. –
Rozwiązano, wstawiając '-include' po' all: '. –