makefile特殊变量VPATH和vpath的作用和用法
前言
在一些大的工程中,有大量的源文件,我们通常的做法是把这些的源文件进行分类,并存放在不同的目录中。所以,当make需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉make,让make在自动去找。Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。如果定义了这个变量,那么,make就会在当当前目录找不到的情况下,到所指定的目录中去找寻文件了。
VPATH变量定义
在makefile文件中这样定义:
VPATH = src:../headers
上面的的定义指定了两个目录,“src”和“…/headers”,make会按照这个顺序进行搜索。目录由“冒号”分隔。(当然,当前目录永远是最高优先搜索的地方)
vpath关键字
另一个设置文件搜索路径的方法是使用make的“vpath”关键字(注意,它是全小写的), 这不是变量,这是一个make的关键字,这和上面提到的那个VPATH变量很类似,但是它更为灵活。它可以指定不同的文件在不同的搜索目录中。这是一个很 灵活的功能。它的使用方法有三种:
方法1
vpath pattern directories
为符合模式pattern的文件指定搜索目录directories。
方法2
vpath pattern
清除符合模式pattern的文件的搜索目录。
方法3
vpath
清除所有已被设置好了的文件搜索目录。
%字符
vapth使用方法中的pattern需要包含“%”字符。“%”的意思是匹 配零或若干字符,例如,“%.h”表示所有以“.h”结尾的文件。pattern指定了要搜索的文件集, 而directories则指定了pattern的文件集的搜索的目录。例如:
vpath %.h ../headers
该语句表示,要求make在“…/headers”目录下搜索所有以“.h”结尾的文件。(如果某文件在当前目录没有找到的话)
多次使用vpath
我们可以连续地使用vpath语句,以指定不同搜索策略。如果连续的vpath语句中出现了相同的pattern,或是被重复了的pattern,那么,make会按照vpath语句的先后顺序来执行搜索。如:
vpath %.c foo
vpath %.c blish
vpath %.c bar
其表示“.c”结尾的文件,先在“foo”目录,然后是“blish”,最后是“bar”目录。
而下面的语句则表示“.c”结尾的文件,先在“foo”目录,然后是“bar”目录,最后才是“blish”目录。
vpath %.c foo:bar
vpath %.c blish
更新于:6个月前相关文章
- 【说站】java SimpleDateFormat如何转换局部变量
- 【说站】python实例方法中self的作用
- 【说站】python变量中self的添加
- 【说站】java多线程的作用
- 【说站】python保护变量是什么
- 【说站】js变量的作用域如何使用
- 【说站】python装饰器有哪些作用
- 怎样的变量命名,才显得有文化?
- 【说站】python判断变量的方法对比
- 【说站】python定义数值类型变量的方法
- 【说站】python自由变量是什么
- 【说站】python变量如何在作用域使用
- 【说站】python局部作用域是什么
- 【说站】javascript判断变量相等的方法整理
- 【说站】java中不同变量的区别
- 【说站】java环境变量的作用
- 【说站】python中函数的作用探究
- 【说站】python变量的赋值和优势
- 【说站】python变量的概念及定义
- 【说站】java 反射机制作用