当前位置: 技术问答>linux和unix
关于makefile的vpath
来源: 互联网 发布时间:2016-12-23
本文导语: 代码如下 ============================ vpath %.c sources vpath %.h headers objs = test.o trangle.o circle.o test: $(objs) gcc -o $@ $(objs) trangle.o: sq.h circle.o: pi.h .phony:clean clean: -rm test *.o ============================= 当前目录下,header...
代码如下
============================
vpath %.c sources
vpath %.h headers
objs = test.o trangle.o circle.o
test: $(objs)
gcc -o $@ $(objs)
trangle.o: sq.h
circle.o: pi.h
.phony:clean
clean:
-rm test *.o
=============================
当前目录下,headers/ sources/ makefile
headers下,pi.h sq.h
sources下 ,trangle.c circle.c
make不过,提示如下
=============================
cc -c -o trangle.o sources/trangle.c
sources/trangle.c:1:16: 致命错误:sq.h:没有那个文件或目录
编译中断。
make: *** [trangle.o] 错误 1
==============================
不知道为什么。。
如果把五个文件都放一起,可以通过。。
============================
vpath %.c sources
vpath %.h headers
objs = test.o trangle.o circle.o
test: $(objs)
gcc -o $@ $(objs)
trangle.o: sq.h
circle.o: pi.h
.phony:clean
clean:
-rm test *.o
=============================
当前目录下,headers/ sources/ makefile
headers下,pi.h sq.h
sources下 ,trangle.c circle.c
make不过,提示如下
=============================
cc -c -o trangle.o sources/trangle.c
sources/trangle.c:1:16: 致命错误:sq.h:没有那个文件或目录
编译中断。
make: *** [trangle.o] 错误 1
==============================
不知道为什么。。
如果把五个文件都放一起,可以通过。。
|
vpath %.h ../headers
其含义是:Makefile中出现的.h文件;如果不能在当前目录下找到,则到目录“../headers”下寻找。注意:这里指定的路径仅限于在Makefile文件内容中出现的.h文件。 并不能指定源文件中包含的头文件所在的路径(在.c源文件中所包含的头文件路径需要使用gcc的“-I”选项来指定,可参考gcc的info文档)。
其含义是:Makefile中出现的.h文件;如果不能在当前目录下找到,则到目录“../headers”下寻找。注意:这里指定的路径仅限于在Makefile文件内容中出现的.h文件。 并不能指定源文件中包含的头文件所在的路径(在.c源文件中所包含的头文件路径需要使用gcc的“-I”选项来指定,可参考gcc的info文档)。
|
cc的时候 -I指定下头文件的目录