杭州网站建设哪家最好,建立企业网站的详细步骤,网页技术开发设计,汕头招聘网官网我们都知道一个工程文件中的源文件有很多#xff0c;并且存放的位置可能不相同(工程中的文件会被放到不同的目录下)#xff0c;所以按照之前的方式去编写 Makefile 会有问题。我们之前列举的例子#xff0c;所有的源文件基本上都是存放在与 Makefile 相同的目录下。只要依赖… 我们都知道一个工程文件中的源文件有很多并且存放的位置可能不相同(工程中的文件会被放到不同的目录下)所以按照之前的方式去编写 Makefile 会有问题。我们之前列举的例子所有的源文件基本上都是存放在与 Makefile 相同的目录下。只要依赖的文件存在并且依赖规则没有问题执行 make命令整个工程就会按照对我们编写规则去编译最终会重建目标文件。那如果需要的文件是存在于不同的路径下在编译的时候要去怎么办呢(不改变工程的结构)这就用到了 Makefile 中为我们提供的目录搜索文件的功能。常见的搜索的方法的主要有两种一般搜索VPATH和选择搜索vpath。乍一看只是大小写的区别其实两者在本质上也是不同的。VPATH 和 vpath 的区别VPATH 是变量更具体的说是环境变量Makefile 中的一种特殊变量使用时需要指定文件的路径vpath 是关键字按照模式搜索也可以说成是选择搜索。搜索的时候不仅需要加上文件的路径还需要加上相应限制的条件。 VPATH的使用在 Makefile 中可以这样写VPATH : src我们可以这样理解把 src 的值赋值给变量 VPATH所以在执行 make 的时候会从 src 目录下找我们需要的文件。当存在多个路径的时候我们可以这样写VPATH : src car或者是VPATH : src:car多个路径之间要使用空格或者是冒号隔开表示在多个路径下搜索文件。搜索的顺序为我们书写时的顺序拿上面的例子来说我们应该先搜索 src 目录下的文件再搜索 car 目录下的文件。注意无论你定义了多少路径make 执行的时候会先搜索当前路径下的文件当前目录下没有我们要找的文件才去 VPATH 的路径中去寻找。如果当前目录下有我们要使用的文件那么 make 就会使用我们当前目录下的文件。实例VPATHsrc cartest:test.ogcc -o $ $^假设 test.c 文件没有在当前的目录而在当前文件的子目录 src 或者是 car 下程序执行是没有问题的但是生成的 test 的文件没有在定义的子目录文件中而是在当前的目录下当然生成文件路径可以指定。vpath的使用学习了 VPATH的使用我们再来了解一下关键字搜索 vpath 的使用这种搜索方式一般被称作选择性搜索。使用上的区别我们可以这样理解VPATH 是搜索路径下所有的文件而 vpath 更像是添加了限制条件会过滤出一部分再去寻找。 具体用法1) vpath PATTERN DIRECTORIES 2) vpath PATTERN3) vpath( PATTERN可以理解为要寻找的条件DIRECTORIES寻找的路径 )首先是用法一命令格式如下vpath test.c src可以这样理解在 src 路径下搜索文件 test.c。多路径的书写规则如下vpath test.c src car 或者是 vpath test.c src : car多路径的用法其实和 VPATH 差不多都是使用空格或者是冒号分隔开搜索路径的顺序是先 src 目录然后是 car 目录。其次是用法二命令格式如下vpath test.c用法二的意思是清除符合文件 test.c 的搜索目录。最后是用法三命令格式如下vpathvpath 单独使的意思是清除所有已被设置的文件搜索路径。另外在使用 vpath 的时候搜索的条件中可以包含模式字符“%”这个符号的作用是匹配一个或者是多个字符例如“%.c”表示搜索路径下所有的 .c 结尾的文件。如果搜索条件中没有包含“% 那么搜索的文件就是具体的文件名称。 使用什么样的搜索方法主要是基于编译器的执行效率。使用 VPATH 的情况是前路径下的文件较少或者是搜索的文件不能使用通配符表示这些情况下使用VPATH最好。如果存在某个路径的文件特别的多或者是可以使用通配符表示的时候就不建议使用 VPATH 这种方法为什么呢因为 VPATH 在去搜索文件的时没有限制条件所以它回去检索这个目录下的所有文件每一个文件都会进行对比搜索和我们目录名相同的文件不仅速度会很慢而且效率会很低。我们在这种情况下就可以使用 vpath 搜索它包含搜索条件的限制搜索的时候只会从我们规定的条件中搜索目标过滤掉不符合条件的文件当然查找的时候也会比较的快。