makefile专题:make中的路径搜索(上)

2018-02-27 10:50:43来源:https://www.jianshu.com/p/52c0f69008f6作者:jacob2359人点击

分享


关键词:源码管理方式、VPATH、make对于VPATH值的处理方式、vpathvpath的取消搜索规则


1. 常用的源码管理方式



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


2. 特殊的预定义变量VPATH

VPATH变量的值用于指示make如何查找文件
不同文件夹可作为VPATH的值同时出现
文件夹的名字之间需要使用分隔符进行区分





3. make对于VPATH值的处理方式

当前文件夹找不到需要的文件时,VPATH会被使用
make会在VPATH指定的文件夹中依次搜索文件
当多个文件夹存在同名文件时,选择第一次搜索到的文件


注意事项:



VPATH只能决定make的搜索路径,无法决定命令的搜索路径
对于特定的编译命令(gcc),需要独立指定编译搜索路径







OBJS := func.o main.o
INC := inc
SRC := src
VPATH := $(INC) $(SRC)
CFLAGS := -I $(INC)
hello.out : $(OBJS)
@gcc -o $@ $^
@echo "Target File ==> $@"
$(OBJS) : %.o : %.c func.h
@gcc $(CFLAGS) -o $@ -c $<

VPATH存在的问题:
inc文件夹中意外出现源文件(C/Cpp文件),那么可能产生编译错误!
替换方案:使用vpath关键词(全小写):为不同类型的文件指定不同的搜索路径
语法:在Directory中搜索符合Pattern的规则文件






OBJS := func.o main.o
INC := inc
SRC := src
CFLAGS := -I $(INC)
# 修改VPATH存在的问题 使用vpath
vpath %.h $(INC)
vpath %.c $(SRC)
hello.out : $(OBJS)
@gcc -o $@ $^
@echo "Target File ==> $@"
$(OBJS) : %.o : %.c func.h
@gcc $(CFLAGS) -o $@ -c $<

4. vpath的取消搜索规则

1) 取消已经设置的某个搜索规则:vpath Pattern





2)取消所有已经设置的规则: vpath


5. 小结

VPATH变量用于指示make如何查找文件
make会在VPATH指定的文件夹中依次搜索文件
vpath关键字可以为不同类型的文件指定不同的搜索路径

vpathVPATH更灵活易用,可动态设置/取消搜索路径


声明:此文章为本人在学习狄泰软件学院《十二月提升计划》所做的笔记,参考书籍《专业嵌入式软件开发》——李云,文章中包含狄泰软件资料内容和《专业嵌入式软件开发》资料内容,一切版权归狄泰软件和《专业嵌入式软件开发》所有!









最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台