长话短说: make有几个缺陷,几乎不适合编译 C 语言,完全不适合编译 Java。如果愿意,您可以强制它编译 Java,但是可能会遇到问题,其中一些问题没有合适的解决方案或变通方法。这里有一些:
依赖解析
make固有地期望文件之间具有类似树的依赖关系,其中一个文件是构建多个其他文件的输出。在处理头文件时,这在 C 语言中已经适得其反。make需要生成一个特定于 make的包含文件,以表示 C 文件对其头文件的依赖关系,因此对后者的更改将导致重新构建前者。但是,由于 C 文件本身不会重新创建(只是重新构建) ,make 通常需要将目标指定为 .PHONY。幸运的是,GCC 支持自动生成这些文件。