1.概述
makefile的作用是实现工程的自动编译,最终目的是为了得到一个目标文件。makefile定义了一个工程中的编译规则,文件之间的编译的先后顺序,依赖关系。make是一个解释makefile中指令的命令工具。
一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。make所完成的也就是这个目标。
对于C/C++,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。Makefile文件告诉make命令如何进行编译和链接。
2. 规则
target ... : prerequisites ...
command
...
...
target是目标文件(一个或多个),可以是Object File,也可以是执行文件,还可以是一个标签(Label)。
prerequisites就是要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。(任意的Shell命令)
第一行说明了目标文件生成的依赖关系,即需要右边的条件才能生成左边的目标,注意冒号左右都有一个空格。
第二行说明了生成的规则。prerequisites如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。注意command前面是以一个tab键开头。