####################### path name ########################## PWD = . LIB = $(PWD)/lib OBJ = $(PWD)/obj INC = $(PWD)/inc SRC = $(PWD)/src EMP = $(PWD) CC = gcc ################ compiler information: gcc ################# GCC_OPT := -I$(INC) -L$(LIB) -g AR_OPT := cvr EXAMPLE_CC := $(CC) $(GCC_OPT) -o OBJ_CC := $(CC) $(GCC_OPT) -c -o SLIB_CC := ar $(AR_OPT) ######################## targets ########################### OBJECT = utility array list queue stack sptree #dequeue heap map hash SOURCE := $(foreach n,$(OBJECT),$(SRC)/$(n).c) HEADER := $(foreach n,$(OBJECT),$(INC)/$(n).h) OBJFIL := $(foreach n,$(OBJECT),$(OBJ)/$(n).o) TARGET := $(LIB)/libctl.a EMPFIL := example.c EMPOUT := example ######################## setting ########################### .SUFFIXES: .PHONY: all clean example .PRECIOUS: .SECONDARY: ######################## targets ########################### all: $(TARGET); $(TARGET): $(OBJFIL) @echo 'make static library ....... $@' @-rm -f $@ @$(SLIB_CC) $@ $^ $(OBJFIL): $(OBJ)/%.o: $(SRC)/%.c $(INC)/%.h @echo 'make object file .......... $@' @$(OBJ_CC) $@ $< $(EMPOUT): $(EMPFIL) $(TARGET) @echo 'make test program for ...... $^' @$(EXAMPLE_CC) $@ $^ clean: -rm -f $(LIB)/* -rm -f $(OBJ)/* -rm -f $(EMPOUT)