makefile编写说明

来源:互联网 发布:phpip采集源码 编辑:程序博客网 时间:2024/05/06 16:49


1.定义:makefile是通过制定规则来编译程序的一个脚本而已。在linux中使用make命令来执行makefile文件。


2.命名:Makefile或makefile,若是指定其他名称。如:makeFile.可以这样使用make -f makeFile或make clean -f makeFile


3.规则:makeFile

target:prerequisties

(tab键)command

命令实现:比较target和prerequisties的创建时间,若target比prerequisties时间早,或是不存在,就执行下面的命令。若prerequisties不存在,就在下个标签中找,若找不到,就报错。这个就是依赖关系。一层层去找。


4.makefile里面的内容

makefile里面包含5个东西:显示规则,隐讳规则,变量定义,文件指示及注释

显示规则:就是makefile中定义的目标和命令的依赖关系

隐讳规则:make命令自动实现的自动推到

变量定义:像编程语音中的,取个名字包含目标或其他名称

文件指示:1。makefile中包含另一makefile(如:include)。2.根据某些情况指定makefile中有效部分(#if)。3.定义一个多行的命令

注释:#


5.引用其他makefile

语法:include <filename>   说明(inlcude前面可以有空格但是不能有tab), filename可以带路径和通配符,及变量。如include  foo.make *.mk, $(sb) 用空格间隔


6.makefile工作流程

1.读入所有的makefile

2.读入include的makefile

3.初始化文件中的变量

4.推到隐讳规则

5.为所有的规则建立依赖链

6.根据依赖关系,决定生产目标

7.执行命令


7.makefile中特殊用法:

7.1通配符:*,?, ...。支持转义字符\

7.2.关键字

wildcard

VPATH:自动搜寻,

VPATH <patter> <directories> ,在dirctories下搜寻符合patter

VPATH <pater>,VPATH,分别清楚特定格式路径,和清楚所有被设置的路径

eg.VPATH %.h ../headers,在“../headers”目录下搜寻所有.h文件

vpath %.c foo:bar 现在foo目录下找.c, 再在bar目录下找.c

自动化变量:$@目标集,$%当目标是函数库文件,则表示规则中的目标成员。$<表示依赖目标中的第一个目标。$?所有比目标新的依赖目标集合,以空格分隔。$+所有依赖目标集合。$*表示目标模式中%及之前的部分。

D和F:比如:dir/foo.o.对$(@D)为dir.。对$(@F)为foo.o

$(*D),$(*F)为文件目录和文件部分

其他类推。。。










原创粉丝点击