SRC := # SRC += main.c #OBJ := $(subst .c,.o,$(SRC)) OBJ = $(SRC:%.c=%.o) CC = gcc FLAG = -Wall OPTION = -lpthread -ldl EXEC_NAME = demo EXEC_PATH = . .PHONY:clean demo demo:$(OBJ) @echo make ... $(CC) $^ -o $(EXEC_PATH)/$(EXEC_NAME) $(FLAG) $(OPTION) @echo make over @echo Execute target is $(EXEC_PATH)/$(EXEC_NAME) $(OBJ):%.o:%.c $(CC) -c -o $@ $< $(FLAG) clean: @echo clean ... rm $(EXEC_PATH)/$(EXEC_NAME) *.o -rf @echo clean over