或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但是一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,「会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力」。因为makefile关系到了整个工程的编译规则。
上期「用GCC写个库给你玩」已经详细介绍了GCC编译链接的过程,那么接下来就聊聊makefile艺术。
makefile介绍make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样的去编译和链接程序。
makefile的规则是:
1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2.如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3.如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。
makefile的规则在讲述这个makefile之前,还是让我们先来粗略地看一看makefile的规则。
target...:prerequisites...