日期:2014-05-16  浏览次数:20712 次

linux下makefile的vpath问题
我的文件目录结构是:
./
 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都找不到了....
怎么回事啊!请各位不吝赐教,谢谢!

------解决方案--------------------
gcc -c -o main.o main.c -I.
不用指定头文件,只用指定目录即可
------解决方案--------------------
VPATH 只控制.c/.cpp的查找路径吧

对于.h文件,需要使用-I./header
------解决方案--------------------
是这样的,vpath只对Makefile中的依赖查找有效
对源文件中的#include的查找无效。