1 CC = gcc
 2 
 3 CFLAGS =  -Wall -g 
 4 LDFLAGS = 
 5 
 6 SRC_DIR = src
 7 INC_DIR = inc
 8 OBJ_DIR = obj
 9 
10 SRC = $(wildcard *.c) $(wildcard $(SRC_DIR)/*.c)
11 INC = $(wildcard *.h) $(wildcard $(INC_DIR)/*.h)
12 INCLUDE = -I$(INC_DIR)
13 #DIR = $(notdir$(SRC))
14 OBJ = $(addprefix $(OBJ_DIR)/,$(notdir $(patsubst %.c,%.o,$(SRC))))
15 
16 VPATH = src:inc
17 #TARGET = $(addprefix $(OBJ_DIR)/,serv_test1)
18 TARGET = serv_test1
19 
20 all: $(TARGET)
21 
22 $(TARGET):$(OBJ)
23     $(CC) $^ -o $@
24 
25 $(OBJ_DIR)/%.o:$(SRC)
26     mkdir -p $(OBJ_DIR)
27     $(CC) $(INCLUDE) -c  $(CFLAGS)  $< -o $@
28 
29 clean:
30     rm -rf $(OBJ_DIR)
31     rm -f $(TARGET)

文件结构:

 1 .
 2 ├── inc
 3 │   └── serv_test1.h
 4 ├── Makefile
 5 ├── obj
 6 │   └── serv_test1.o
 7 ├── serv_test1
 8 ├── src
 9 │   └── serv_test1.c
10

其中obj是自动生成的临时文件,serv_test1是可执行文件