经常用到的三个函数 $(wildcard pattern) $(patsubst pattern, replacement, text) $(shell cmd)
.PHONY:clean
CC=gcc
CFLAGS= -Wall -g
BIN=main_exe
ROOTSRC=$(wildcard *.c)
ROOTOBJ=$(patsubst %.c, %.o, $(ROOTSRC))
SUBDIR=$(shell ls -d */)
SUBSRC=$(shell find $(SUBDIR) -name '*.c')
SUBOBJ=$(SUBSRC:%.c=%.o)
$(BIN):$(ROOTOBJ) $(SUBOBJ)
$(CC) $(CFLAGS) $^ -o $@
%.o:%.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf $(BIN) $(ROOTOBJ) $(SUBOBJ)