大型项目中,每个模块都有自己的一个makefile。
例如一个子模块目录subdir,总的makefile可以写为:
subsystem:
cd subdir && $(MAKE)
等价于:
subsystem:
$(MAKE) -C subdir
- 总的Makefile变量可以传递到下级的Makefile中(如果你显示的声明),但是不会覆盖下层的Makefile中所定义的变量,除非指定了“-e”参数。
- $(MAKE)宏变量的意思是,也许我们的 make 需要一些参数,所以定义成一个变量比较利于维护。
- 如果需要传参到下级makefile中,则声明export<variable...>,不传参到下级则unexport<variable...>。
- SHELL和MAKEFLAGS这两个变量无论是否export总是要传递到下层Makefile中。
- “-w” 或者“--print-directory”会在 make 的过程中输出一些信息,让你看到目前的工作目录。