码迷,mamicode.com
首页 > 其他好文 > 详细

第18课 - make 中的路径搜索(下)

时间:2018-01-28 20:51:33      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:图片   his   sed   printf   path   att   如何   code   file   

第18课 - make 中的路径搜索(下)

1. 问题一

  当 VPATH vpath 同时出现,make 会如何处理?

  工程项目的目录结构如下图所示,src1 src2 中都包含了 func.c 文件,如果在 makefile 中使用 VPATH 指定了 src1 ,使用 vpath 指定了 src2,当 VPATH vpath 同时存在时,make 会做出怎样的处理?

  技术分享图片

【编程实验】

技术分享图片
1 #include <stdio.h>
2 #include "func.h"
3 
4 void foo()
5 {
6     printf("void foo() : %s\n", "This file is from src1 ...");
7 }
src1目录中的func.c文件
技术分享图片
1 #include <stdio.h>
2 #include "func.h"
3 
4 void foo()
5 {
6     printf("void foo() : %s\n", "This file is from src2 ...");
7 }
src2目录中的func.c文件
技术分享图片
 1 VPATH := src1  # 使用VPATH指定src1
 2 CFLAGS := -I inc
 3 
 4 vpath %.c src2    #使用vpath指定src2
 5 vpath %.h inc
 6 
 7 app.out : func.o main.o
 8     @gcc -o $@ $^
 9     @echo "Target File ==> $@"
10 
11 %.o : %.c func.h
12     @gcc $(CFLAGS) -o $@ -c $<
VPATH和vpath同时出现,make的处理方式

  执行 make 后的输出结果:

  技术分享图片

【实验结论】

  make 搜索文件的次序如下:

  make 首先在当前文件夹中搜索需要的文件,如果搜索失败,make 优先在 vpath 指定的文件夹中搜索目标文件,当 vpath 搜索失败时,转而搜索 VPATH 指定的文件夹。

  技术分享图片

2. 问题二

   当使用 vpath 对同一个 Pattern 指定多个文件夹时,make 会如何处理?

  工程项目的目录结构与问题一相同,src1 和 src2 中都包含了 func.c 文件,如果在 makefile 中使用 vpath 同时指定了两个src1 src2 两个目录,make 会做出怎样的处理?

  技术分享图片

【编程实验】

技术分享图片
 1 CFLAGS := -I inc
 2 
 3 vpath %.c src1
 4 vpath %.c src2
 5 
 6 vpath %.h inc
 7 
 8 app.out : func.o main.o
 9     @gcc -o $@ $^
10     @echo "Target File ==> $@"
11 
12 %.o : %.c func.h
13     @gcc $(CFLAGS) -o $@ -c $<
14 
15     
vpath指定多个文件夹

  执行 make 后的输出结果:(src1 出现在 src2 之前)

  技术分享图片

【实验结论】

  当 makefile 中使用 vpath 对同一个 Pattern 指定了多个目录时,make 会以自上而下的顺序搜索 vpath 指定的文件夹,当找到目标文件时,搜索结束。

  技术分享图片

3. 问题三

 

注:本文整理于《狄泰12月提升计划》课程内容

第18课 - make 中的路径搜索(下)

标签:图片   his   sed   printf   path   att   如何   code   file   

原文地址:https://www.cnblogs.com/shiwenjie/p/8372187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!