当前位置: 技术问答>linux和unix
菜鸟求助makefile相关
来源: 互联网 发布时间:2016-03-19
本文导语: 我的目录结构如下 ---Mtest |---Makefile |---headers |---func1.h |---func2.h ...
我的目录结构如下
---Mtest
|---Makefile
|---headers
|---func1.h
|---func2.h
|---func3.h
|---def.h
|---src
|---test.c
|---func1.c
|---func2.c
|---func3.c
Makefile内容如下:
OBJS = test.o func1.o func2.o func3.o
#VPATH = ./headers:./src
vpath %.c src
vpath %.h headers
test:$(OBJS)
cc -o test $(OBJS)
#$(objs):def.h
#test.o:func1.h func2.h func3.h
test.o:def.h func1.h func2.h func3.h
func1.o:func1.h def.h
func2.o:func2.h def.h
func3.o:func3.h def.h
.PHONY:clean
clean:
-rm test $(OBJS)
make以后总是报错找不到相关的头文件,但是我把*.h *.c放到Makefile的同级目录把vpath变量去掉的时候就可以make过去,是因为刚学到了vpath变量,所以想改变目录结构试着用下vpath,就搞成了上面那样,结果make出错了。
请各位指点迷津
---Mtest
|---Makefile
|---headers
|---func1.h
|---func2.h
|---func3.h
|---def.h
|---src
|---test.c
|---func1.c
|---func2.c
|---func3.c
Makefile内容如下:
OBJS = test.o func1.o func2.o func3.o
#VPATH = ./headers:./src
vpath %.c src
vpath %.h headers
test:$(OBJS)
cc -o test $(OBJS)
#$(objs):def.h
#test.o:func1.h func2.h func3.h
test.o:def.h func1.h func2.h func3.h
func1.o:func1.h def.h
func2.o:func2.h def.h
func3.o:func3.h def.h
.PHONY:clean
clean:
-rm test $(OBJS)
make以后总是报错找不到相关的头文件,但是我把*.h *.c放到Makefile的同级目录把vpath变量去掉的时候就可以make过去,是因为刚学到了vpath变量,所以想改变目录结构试着用下vpath,就搞成了上面那样,结果make出错了。
请各位指点迷津
|
vpath 是make用的
make可以去找到vpath指示的目录去寻找.o依赖的.c并形成相应的gcc命令进行编译
以func1.o为例。
会调用gcc -c ./src/func1.c -o func1.o
通过 vpath %.h ./headers
和 func1.o:func1.h def.h
make会在headers目录下的func1.h或def.h更新时,自动重新生成func1.o
但是make不会根据自动给CFLAGS 增加 -I./headers
make可以去找到vpath指示的目录去寻找.o依赖的.c并形成相应的gcc命令进行编译
以func1.o为例。
会调用gcc -c ./src/func1.c -o func1.o
通过 vpath %.h ./headers
和 func1.o:func1.h def.h
make会在headers目录下的func1.h或def.h更新时,自动重新生成func1.o
但是make不会根据自动给CFLAGS 增加 -I./headers