makefile的VPATH坑

源问题链接:https://bbs.csdn.net/topics/380178411

问题:

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

解答:

你make的时候提示找不到h文件,不是make命令找不到h文件。而是make找到了h文件和c文件,但gcc在编译c文件时,链接不到那个h文件。因为你没有加-I选项指定h文件的目录,所以gcc编译默认在当前c文件的目录下查找,查不到h文件,所以提示出错。这样说你明白了?
你后面说到用shell命令,两个都查不到了,那肯定是这样啊。gcc命令默认在当前目录下查找c文件和h文件,但你两个文件都不在当前目录下,是在当前目录下的文件夹里。

 我的理解是:如果makefile中的编译命令应该是  gcc ./src/main.c -I ./header

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值