makefile学习笔记-书写规则(文件搜寻)

20180413 makefile学习笔记-书写规则(文件搜寻)


在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中,所以,当make需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉make,让make去自动寻找。

Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。如果定义了这个变量,那么 make就会在当前目录找不到的情况下,到所指定的目录中去找寻文件。



eg:

VPATH=src:../headers

上面是指定了两个目录,“src”和“../headers”,make会按照这个顺序进行搜素,目录由“冒号”分割。(当然,当前目录永远是最高优先搜索的地方)。


另一个设置文件搜素路径的方法是使用make的“vpath”关键字(注意,它是全小写的),这不是变量,这是一个make的关键字,这和上面提到的VPATH变量很相似,但是它更为灵活。它可以指定不同的文件在不同的搜索目录中,这是一个很灵活的功能。它的使用方法有三种:


1、 vpath<pattern><directories>
    为复合模式  <pattern>的文件指定搜索目录<directories>。


2、vpath<pattern>
   清除复合模式<pattern>的文件的搜索目录。



3、vpath
   清除所有已被设置好了的文件搜索目录。



vpath使用方法中的<pattern>需要包含“%”字符。“%”的意思是匹配零或若干字符,例如,“%.h”表示所有以“%.h”结尾的文件。<pattern>指定了要搜索的文件集,而<directories>则指定了<pattern>的文件集的搜索的目录,例如:

vpath %.h ../headers

该语句表示,要求make在“../headers”目录下搜索所有以“.h”结尾的文件(如果某文件在当前目录下没有找到的话)。



我们可以连续地使用vpath语句,以指定不同的搜索策略,如果连续的vpath语句中出现了相同的<pattern>,或是被重复了的<pattern>,那么,make会按照vpath语句的先后顺序来执行搜索。如:
vpath %.c foo
vpath %.c blish
vpath %.c bar

其表示“.c”结尾的文件,现在“foo”目录,然后在“blish”目录,最后在“bar”目录。

而下面的语句:

vpath %.c foo:bar
vpath %.c blish


而上面的语句则表示“.c”结尾的文件,先在“foo”目录,然后在“bar”目录,最后才在“blish”目录。

































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值