分类: LINUX
2007-07-24 22:26:01
在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而
在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标
文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。
一、Makefile的规则
在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。
target ... : prerequisites ...
command
...
...
target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个
标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。(任意的Shell命令)
就要在make命令后明显得指出这个lable的名
字。这样的方法非常有用,我们可以在一个makefile中定义不用的编译或是和编译无关的命
令,比如程序的打包,程序的备份,等等。
五、让make自动推导
GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要
去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令
。
只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果make找到一个whatever.o,那么whatever.c,就会是whatever.o的依赖文件。并且 cc -c whatever.c 也会被推导出来.
“.PHONY”表示,clean是个伪
目标文件。
.PHONY : clean
clean :
-rm edit $(objects)
前面说过,.PHONY意思表示clean是一个“伪目标”,。而在rm命令前面加了一个小减号的
意思就是,也许某些文件出现问题,但不要管,继续做后面的事。
(待续)
(总结自:陈皓专栏【空谷幽兰,心如皓月】)