Makefile模版(proC)

.PHONY: all clean
CC=gcc

PROC=proc
BIN= target
DEPF= main.dep

SRC_FILE_TYPE= .c .cpp
H_FILE_TYPE= .h .hpp
PC_FILE_TYPE= .pc

LOCAL_PC_SRC_PATH= .
LOCAL_SRC_PATH= .
LOCAL_INCLUDE_PATH= . $(ORACLE_HOME)/precomp/public
LOCAL_LIBRARY_PATH= . $(ORACLE_HOME)/lib
LIBS= -lclntsh
D_FINE_SIGN=

OTHER_FILE= *.lis

DEFINE_FLAGS=$(addprefix -D, $(D_FINE_SIGN))
CFLAGS= $(addprefix -I, $(LOCAL_INCLUDE_PATH))  -g  -Wall
CXXFLAGS= $(addprefix -I, $(LOCAL_INCLUDE_PATH)) -g  -Wall
LDFLAGS= $(addprefix -L, $(LOCAL_LIBRARY_PATH))

GENERALLY_ALL_PC_SRC_FILE=$(foreach n, $(LOCAL_PC_SRC_PATH), $(foreach m, $(PC_FILE_TYPE), $(n)/*$(m)))
SUBST_ALL_PC_SRC_FILE=$(subst //, /, $(GENERALLY_ALL_PC_SRC_FILE))
ALL_PC_FILE=$(filter-out  $(subst ., %/*.,  $(PC_FILE_TYPE)),  $(shell echo $(SUBST_ALL_PC_SRC_FILE)))

ALL_SRC_FILE=$(patsubst %.pc,%.c,$(ALL_PC_FILE))

GENERALLY_H_FILE=$(foreach n, $(LOCAL_INCLUDE_PATH), $(foreach m, $(H_FILE_TYPE), $(n)/*$(m)))
SUBST_H_FILE=$(subst //, /, $(GENERALLY_H_FILE))
H_FILE=$(filter-out $(subst ., %/*., $(H_FILE_TYPE)), $(shell echo $(SUBST_H_FILE)))

OBJ=$(foreach n, $(subst .,%., $(SRC_FILE_TYPE)), $(filter %.o, $(patsubst $(n),%.o, $(ALL_SRC_FILE))))

all:$(DEPF) $(BIN)
$(DEPF):$(ALL_SRC_FILE) $(H_FILE)
	@cat /dev/null > $@
	$(CC) $(CFLAGS) $(DEFINE_FLAGS) $(ALL_SRC_FILE) -MM >>  $@
$(ALL_SRC_FILE):$(ALL_PC_FILE)
	$(PROC) $^
-include $(DEPF)
$(BIN):$(OBJ)
	$(CC) $(CFLAG) $(LDFLAGS) $(LIBS) $^ -o $@
clean:
	rm -rf $(BIN) $(OBJ) $(DEPF) $(ALL_SRC_FILE) $(OTHER_FILE)

猜你喜欢

转载自blog.csdn.net/Malloc_New/article/details/80544830