Ist es möglich, eine Bereinigung aus dem übergeordneten Verzeichnis durchzuführen, die auch alle Unterverzeichnisse rekursiv löscht, ohne ein Makefile in jedem Unterverzeichnis aufzunehmen?Makefile verwenden, um Unterverzeichnisse zu bereinigen
Zum Beispiel zur Zeit in meinem Makefile habe ich so etwas wie:
SUBDIRS = src, src1
.PHONY: clean subdirs $(SUBDIRS)
clean: $(SUBDIRS)
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c
$(SUBDIRS):
$(MAKE) -C $(SUBDIRS) clean
Dies erfordert jedoch ich ein Makefile in beiden src und src1 zu haben. Ansonsten würde ich den Fehler
No rule to make target clean
Da ich nur den Befehl "rm -rf * .o ~ Kern .depend. .cmd * .ko * .mod.c" ausgeführt werden soll in jedem Unterverzeichnis Wie dem auch sei, es scheint redundant zu sein, ein Makefile in jedes Unterverzeichnis mit der exakt gleichen Zeile für clean einzufügen. Gibt es keine Möglichkeit, in jedem der Unterverzeichnisse denselben clean-Befehl auszuführen?
Sie möchten wahrscheinlich nur den Befehl clean löschen Dateien rekursiv löschen. Siehe: https: // Superuser.com/questions/61258/use-rm-to-remove-files-and-directories-recursively –
Das oder einfach loop rein über '$ (SUBDIRS)' und führen Sie 'rm' in jedem manuell. –
Eigentlich, wenn Sie Ihre Makefile Toplevel sorgfältig schreiben (oder schreiben Sie eine separate 'clean.mk' Makefile, die Sie einschließen), dann können Sie' $ (MAKE) -C $ @ -f clean.mk clean' in diesem Rezept, denke ich. (Beachten Sie '$ @' anstelle von '$ (SUBDIRS)'. '-C' nimmt ein einzelnes Argument und keine Liste.) –