À l'aide de Makefile pour nettoyer les sous-répertoires

Est-il possible de faire un make clean à partir du répertoire parent qui a également de manière récursive nettoie tous les sous-répertoires sans avoir à inclure un fichier makefile dans chaque sous-répertoire?

Par exemple, actuellement dans mon Makefile, j'ai quelque chose comme:

SUBDIRS = src, src1

.PHONY: clean subdirs $(SUBDIRS)

clean: $(SUBDIRS)
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c

$(SUBDIRS):
    $(MAKE) -C $(SUBDIRS) clean 

Cependant, cela m'oblige à avoir un Makefile à la fois de la src et de src1. Sinon, j'obtiens l'erreur

No rule to make target clean

Car je ne veux exécuter la commande "rm-rf *.o ~ core .dépendent ..cmd *.ko *.mod.c" dans chaque sous-répertoire de toute façon, il semble superflu d'inclure un fichier Makefile dans chaque sous-répertoire avec exactement la même ligne pour les nettoyer. N'est-il pas simplement avoir le même propre commande exécuter dans chacun des sous-répertoires?

Vous voulez probablement juste de la nettoyer commande supprimer des fichiers de manière récursive. Voir: superuser.com/questions/61258/...
Ou boucle d'assainissement de plus de $(SUBDIRS) et exécuter rm à chaque fois manuellement.
En fait, si vous écrivez votre toplevel makefile soigneusement (ou écrire un distinct clean.mk makefile que vous incluez), alors vous pouvez $(MAKE) -C $@ -f clean.mk clean dans cette recette, je pense. (Avis $@ au lieu de $(SUBDIRS). -C prend un seul argument et non une liste.)
Vous obtiendrez une copie de sous-dossiers variable sur submakes la rupture de la partie récursive de la procédure. Seulement dans le cas où vous avez le même sous-répertoires (avec le même nom) que le plan de travail.

OriginalL'auteur Tony | 2014-09-24