Pourquoi sont .FAUX répétition implicite des règles ne se déclenche pas?

J'ai le récursive makefile:

.PHONY: all clean

%.subdir:
    $(MAKE) -C src $*
    $(MAKE) -C dict $*

all: all.subdir

clean: clean.subdir

et il fonctionne très bien:

$ make all
make -C src all
make[1]: Entering directory `/or-1.3.6-fix/src'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/or-1.3.6-fix/src'
make -C dict all
make[1]: Entering directory `/or-1.3.6-fix/dict'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/or-1.3.6-fix/dict'

Mais il serait plus logique de définir %.subdir règles bidons:

.PHONY: all clean all.subdir clean.subdir

et maintenant, faire des arrêts de travail comme je le souhaite:

$ make all
make: Nothing to be done for `all'.
$ make -d all
...
Updating goal targets....
Considering target file `all'.
 File `all' does not exist.
  Considering target file `all.subdir'.
   File `all.subdir' does not exist.
   Finished prerequisites of target file `all.subdir'.
  Must remake target `all.subdir'.
  Successfully remade target file `all.subdir'.
 Finished prerequisites of target file `all'.
Must remake target `all'.
Successfully remade target file `all'.
make: Nothing to be done for `all'.

Quelqu'un peut-il m'expliquer pourquoi (ou encore mieux du point de moi de faire de la documentation)?

OriginalL'auteur dma_k | 2010-06-22