10.3 Makefile 结构

Source tree 中的 Makefile 使用了递归的机理来运行相对的子树中的 make 目标。递归通过 REC_TARGETSSUBDIR 变量来控制,递归过程在 Makefile.global 中执行。任何加入到 REC_TARGETS 中的变量都将在所有的在 SUBDIR 中的目录中被递归地调用。 此外,目标的带有 -l 后缀的本地变种将会在递归到子目录后被调用,因此递归是深度优先的。

dist, clean, distclean, maintainer-clean 目标默认是递归的,也就是说这些变量将会在所有的含有 Makefile 的目录中调用他们的本地(local) -l 变种。这样真正的深度优先才可以被执行。深度优先对正确运行 *clean 目标是必须的,否则,举个例子, path.mk 将会在调用子目录 *clean 目标之前被删除,但是他包含了 *clean 所要以来的信息。