使用了Makefile中的VPATH,但是遇到make: *** No rule to make target ‘test.c‘, needed by ‘test.o‘. Stop.

使用了Makefile中的VPATH,但是遇到make: *** No rule to make target ‘test.c’, needed by ‘test.o’. Stop.
原因是Makefile中的VPATH,只会改变你的依赖关系,并不会改变你的cmd命令.因此,你想要在cmd中引用你的依赖关系
如下图所示,为你写的目标文件的依赖文件(prerequisites
)中的文件添加了路径前缀.但是没有给你的cmd中的文件添加前缀
targets : prerequisites
command
例如: src中存放test.c
1.
VPATH = ./src
test.o:test.c
gcc -c test.c -o test.o
你此时运行make,可以看到cmd中运行的命令就是gcc -c test.c -o test.o.显然会提示找不到文件
2.
VPATH = ./src
test.o:test.c
gcc -c $< -o test.o
你此时运行make,可以看到cmd中运行的命令时gcc -c ./src/test.c -o test.o
下图参考:GNU make
在这里插入图片描述