在这里,我们所说的依赖关系支持,是指比如源代码中的 test.c 文件 include 了 test.h 文件,但是在修改代码的过程中我们很有可能只修改了 test.h 而没有修改 test.c,因而输入 make 命令之后,test.c 文件并不能自动被重新编译更新,导致我们的 Makefile 不能完美的完成它的使命。
在大多数 Linux 代码包中普遍采用了基于依赖关系的自动编译方法,当然依赖关系的具体实现方式也不同,有的采用 mkdepend 命令来实现,有的采用 gcc 的自动依赖生成来实现,在这里我们采用的是后者的方法。
同时,在使用上这个 Makefile 与第三章中所描述的没有太大的区别,唯一的区别就是多了一些代码,而这些代码不需要用户来进行维护。
为了尽量扩大这个Makefile的使用范围,笔者扩展了这个通用 Makefile 支持了更多的源代码格式:
- ".s" 汇编代码
- ".c" C语言代码
- ".cpp" C++代码
- ".f" Fortran代码
- ".rc" Windows资源文件代码
- ".m" ObjectiveC/C++源代码