书写规则————
在makefile中,规则的顺序是很重要的,因为,makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么.一般来说,定义在makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标.如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标.make所完成的也就是这个目标. 【程序编程相关:2003年olap市场份额报告】
规则包含两个部分,一个是依赖关系,一个是生成目标的方法. 【推荐阅读:.net的MSMQ异步调用】
一.规则举例 【扩展信息:数据挖掘与统计学的关系】
好了,还是让我们来看一看如何书写规则.
foo.o : foo.c defs.h # foo模块 cc -c -g foo.c
看到这个例子,各位应该不是很陌生了,前面也已说过,foo.o是我们的目标,foo.c与defs.h是目标所依赖的源文件,而只有一个命令“cc -c -g foo.c”(以tab键开头).这个规则告诉我们两件事:
1.文件的依赖关系,foo.o依赖于foo.c与defs.h的文件,如果foo.c与defs.h的文件日期要比foo.o文件日期要新,或是foo.o不存在,那么依赖关系发生. 2.如果生成(或更新)foo.o文件.也就是那个cc命令,其说明了,如何生成foo.o这个文件.(当然foo.c文件include了defs.h文件)
二.规则的语法
targets : prerequisites command ...
或是这样:
targets : prerequisites ; command command ...
targets是文件名,以空格分开,可以使用通配符.一般来说,我们的目标基本上是一个文件,但也有可能是多个文件.
command是命令行,如果其不与“target:prerequisites”在一行,那么,必须以[tab键]开头,如果与prerequisites在一行,那么可以用分号做为分隔.(见上)
prerequisites也就是目标所依赖的文件(或依赖目标).... 下一页