当前位置: 技术问答>linux和unix
linux下makefile的vpath问题
来源: 互联网 发布时间:2017-04-24
本文导语: 我的文件目录结构是: ./ makefile header globe.h src main.c 现在我写的简单makefile的一部分是: #开始 vpath %.c ./src vpath %.h ./header main.o:main.c globe.h .PHONY clean clean: -rm *.o #结束 我在当前目录当中...
我的文件目录结构是:
./
makefile
header
globe.h
src
main.c
现在我写的简单makefile的一部分是:
#开始
vpath %.c ./src
vpath %.h ./header
main.o:main.c globe.h
.PHONY clean
clean:
-rm *.o
#结束
我在当前目录当中用make main.o命令测试vpath,结果make的自动推导出:cc -c -o main.o ./src/main.c 但是却提示找不到globe.h,我的理解是既然make自动推导出现了main.c的位置,那么没有理由找不到globe.h啊。同时,如果生成main.o的动作不用make自动推导,自己添加shell命令:gcc -c -o main.o main.c globe.h,结果显示main.c和globe.h都找不到了....
怎么回事啊!请各位不吝赐教,谢谢!
./
makefile
header
globe.h
src
main.c
现在我写的简单makefile的一部分是:
#开始
vpath %.c ./src
vpath %.h ./header
main.o:main.c globe.h
.PHONY clean
clean:
-rm *.o
#结束
我在当前目录当中用make main.o命令测试vpath,结果make的自动推导出:cc -c -o main.o ./src/main.c 但是却提示找不到globe.h,我的理解是既然make自动推导出现了main.c的位置,那么没有理由找不到globe.h啊。同时,如果生成main.o的动作不用make自动推导,自己添加shell命令:gcc -c -o main.o main.c globe.h,结果显示main.c和globe.h都找不到了....
怎么回事啊!请各位不吝赐教,谢谢!
|
VPATH 只控制.c/.cpp的查找路径吧
对于.h文件,需要使用-I./header
对于.h文件,需要使用-I./header
|
gcc -c -o main.o main.c -I.
不用指定头文件,只用指定目录即可
不用指定头文件,只用指定目录即可
|
是这样的,vpath只对Makefile中的依赖查找有效
对源文件中的#include的查找无效。
对源文件中的#include的查找无效。