GNU Make > 再帰的make(--directory または -C オプション)

ディレクトリごとに再帰的にmakeを行いたいときには、
--directoryオプション(または-C)でディレクトリ名を指定して実行する。
$ tree
.
|-- Makefile
|-- bar
| `-- Makefile
`-- foo
`-- Makefile

2 directories, 3 files
$ cat foo/Makefile
.PHONY: all
all:
echo "foo directory"
$ cat bar/Makefile
.PHONY: all
all:
echo "bar directory"
$ cat Makefile
.PHONY: all foo bar
all: foo bar
foo bar:
make --directory=$@
$ make
make --directory=foo
make[1]: ディレクトリ `/home/satoshi/git/sample-codes/gnu_make_recursive/foo' に入ります
echo "foo directory"
foo directory
make[1]: ディレクトリ `/home/satoshi/git/sample-codes/gnu_make_recursive/foo' から出ます
make --directory=bar
make[1]: ディレクトリ `/home/satoshi/git/sample-codes/gnu_make_recursive/bar' に入ります
echo "bar directory"
bar directory
make[1]: ディレクトリ `/home/satoshi/git/sample-codes/gnu_make_recursive/bar' から出ます

再帰的にmakeができることにより、大規模なシステムを非常に少ない手順で可能になる。