1. VPATH 和 vpath 同时存在如何选择
文件结构:
VPATH := src1
CFLAGS := -I inc
vpath %.c src2
vpath %.h inc
app.out : func.o main.o
@gcc -o $@ $^
@echo "Target File ==> $@"
%.o : %.c func.h
@gcc $(CFLAGS) -o $@ -c $<
实验结果:
- make 首先在当前文件夹搜索需要的文件
-如果失败:
make 优先在 vpath 指定的文件夹中搜索目标文件
当 vpath 搜索失败时,转而搜素 VPATH 指定的文件夹
文件结构改变:
文件结构改变:当src1 和 src2 下面只有 func.cpp 文件,那么这个makefile会正常运行吗?
不会正常运行,会报找不到 func.h 的错误,那么为什么会找不到func.h呢?因为会触发隐式规则,在使用 func.cpp生成 func.o 时发现找不到 func.h,因为指定搜索路径只是针对make,在隐式规则下的gcc命令并没有指定 -I参数
</