首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Makefile学习(二)

2012-06-27 
Makefile学习(2)1.makefile文件的内容主要包含以下几个内容:显示规则:显示规则说明了如何生成一个或者多个

Makefile学习(2)

1.makefile文件的内容主要包含以下几个内容:

    显示规则:显示规则说明了如何生成一个或者多个目标文件。即makefile的书写者明显的指出要生成的文件,文件的依赖关系,生成命令。如果有多个目标,默认第一个目标为最终目标。隐晦规则:由于make有自动推导的功能,所以隐晦规则可以让我们比较粗略地书写makefile。变量定义:makefile中可以定义一系列的变量,变量一般都是字符串,和C中的宏相似。当makefile被执行时,其中的变量都会被扩展到相应的引用位置上。文件指示:一个makefile文件中可以引用另一个makefile。注释:makefile中只有行注释,注释符:#,这个和java中的//一样。如果需要在makefile中使用“#”,可以使用反斜杠转义。

    ?

    关于“隐晦规则”后续会进行学习说明。

    注:makefile中的命令必须以Tab开始。

    ?

    2.文件引用

    语法:

    include <filename>

    注:

    filename中可以包含路径和通配符include前面可以有一些空字符,但是不可以以Tab键开始

    示例:

    有以下几个文件:a.mk?? b.mk??? c.mk?? foo.make

    还有一个变量$(bar),其包含了e.mk?? f.mk

    那么:?? include foo.make? *.mk? $(bar)

    等价于?? include foo.make? a.mk? b.mk? c.mk? e.mk? f.mk

    ?

    3.通配符的使用

    make支持三种通配符:*?? ??? [...]

    *:匹配0或多个字符?:匹配任意单一字符[...]:匹配...中的任意单一字符

    ?

    4.文件搜索

    由于在一些大的工程中,源文件数量很多,所以当make需要找寻文件的依赖关系时,就需要知道文件的路径。

    以下是设置路径的方法:

    makefile文件中的特殊变量“VPATH”
    make的关键字“vpath”(全部小写)

    (1)VPATH:

    当makefile中指定了这个变量,make就会在当前目录找不到的情况下到指定的目录文件中去找寻;否之,make只会在当前的目录文件中去寻找依赖文件和目标文件。

    ?

    例如:VPATH=src:../headers

    ?

    说明:

    目录之间由":"分隔,所以上面的定义指定了两个目录:src?? ../headers当前目录永远是最高级优先搜索的地方

    (2)关键字:vpath

    和上面的VPATH变量很类似,但是更为灵活。

    使用方法有以下三种:

    vpath <pattern> <directories>

    为符合模式<pattern>的文件指定搜索目录<directories>

    vpath <pattern>

    清除符合模式<pattern>的文件的搜索目录

    vpath

    清除所有已经被设置好了的文件搜索目录

    ?

    说明:

    vpath使用方法中的<pattern>需要包含“%”字符,意思是匹配零个或者若干个字符

    eg? “%.h”? :所有以“.h”结尾的文件

    <pattern>指定了要搜索的文件集,<directories>则指定了文件的搜索目录

    eg vpath %.h ../headers :表示make在 ./headers目录下搜索所有以 .h 结尾的文件(如果在当前目录下没有找到的话)

    可以连续的使用vpath,以指定不同的策略,make会按照语句顺序执行

    eg? vpath? %.c? foo

    ?????? vpath? % blish

    ?????? vpath? %.c bar

热点排行