makefile学习(十一):make的路径搜索

前言

工程项目中不可能吧全部源文件放到同一个文件夹里

为了项目管理,会根据功能或者代码架构,吧源文件放到不同的目录下.

项目中的makefile必须能够正确定位源文件和依赖文件,最终编译产生可执行程序.

特殊的与定义变量VPATH

VPATH变量的值用于指示make如何查找文件

不同文件夹可作为VPATH的值同时出现

文件夹的名字之间需要使用分隔符进行区分

例如:VPATH := inc src

例如:VPATH := inc;src

例如:VPATH := inc:src

make对于VPATH值的处理方式

当前文件夹找不到需要的文件时,VPATH会被使用

make会在VPATH指定的文件夹中依次搜索文件

当多个文件夹存在同名文件时,选择第一次搜索到的文件

注意事项

VPATH只能决定make的搜索路径,无法决定命令的搜索路径

对于特定的编译命令(gcc),需要独立指定编译搜索路径

gcc -I include-path

VPATH存在的问题

当inc文件夹中意外出现源文件时,那么可能产生编译错误

替换方案:vpath关键字(小写)

为不同类型的文件制定不同的搜索路径

语法:在directory中搜索符合pattern的规则文集那

vpath pattern directory

vpath %.h inc

vpath %.c src

取消搜索规则

vpth %.h (取消搜索.h文件)

vpath(取消全部)

问题

问题一:当VPATH和vpath同时出现,make会如何处理?

优先选择vpath,在vpath搜索不到时再选择VPATH

有可能使用隐式规则

问题二:当有两个vpath同时指定两个文件夹时,make如何处理?

自上而下优先选择

可能使用隐式规则

问题三:通过VPATH指定搜索路径后,make如何决定目标文件的最终位置?

make对路径搜索其实很弱,经常出现一些错误

当app.out完全不存在,make默认在当前文件夹创建

当app.out存在与src,且依赖文件被更新,但app.out不更新

使用GPATH特殊变量指定目标文件夹

GPATH:=src

当app.out完全不存在,make默认在当前文件夹创建

当app.out存在与src,且依赖文件被更新,重新执行命令,生成app.out存在src

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值