使用vpath和VPATH比在.o前面加路径方便多了。
vpath使用
文件目录结构
├── log
│ ├── bar.c
│ ├── bar.h
│ ├── test.c
│ └── test.h
└── test
├── Makefile
├── include
│ └─── foo.h
└── src
├── foo.c
└── main.c
makefile如下
# Makefile
CC = gcc
OBJ = main.o foo.o bar.o test.o
RM = rm
CFLAGS = -I include -I ../log
VPATH =../log
#VPATH =../log:include
#vpath %.h include
vpath %.c src
#VPATH =log
prog:$(OBJ)
$(CC) -o $@ $(OBJ)
#%.o:%.c
# $(CC) $(CFLAGS) -c $<
.PHONY:clean
clean:
-$(RM) -f prog $(OBJ)
makefile中获取当前目录下cpp文件集
SRCS := $(wildcard *.cpp) 表示获取当前目录下的c文件集,放在变量SRCS中
OBJS := $(patsubst %cpp, %o, $(SRCS)) 表示将对应的c文件名转为o文件后放在下面的OBJS变量中