读书人

多索引编译经典makefile

发布时间: 2012-12-22 12:05:05 作者: rapoo

多目录编译经典makefile

?

# Readme:# use: make config# use: make dir# use: make# use: make clean# use: make rebuild# use: make cleanall# use: make test# use: make# firs of all, use "make config" or "make dir" to # build a source files struct. and then,# put your source files into the DIR src# link libs to the DIR libSHELL=/bin/shCC=gccCXX=g++MAKE=makeMAKE_DIR=$(PWD)SRC_DIR=$(MAKE_DIR)/src/OBJ_DIR=$(MAKE_DIR)/obj/LIB_DIR=$(MAKE_DIR)/lib/DEBUG_DIR=$(MAKE_DIR)/debug/RELEASE_DIR=$(MAKE_DIR)/release/OUTPUT_DIR=LIB=-L$(MAKE_DIR)/lib/OUTPUT_FILE=outOUT=vpath %.c $(SRC_DIR)#vpath %.o $(OBJ_DIR)vpath %.d $(OBJ_DIR)DEBUG=1SRC_FILES:=$(wildcard $(SRC_DIR)*.c)SRC_FILES:=$(notdir $(SRC_FILES))OBJ_FILES:=$(patsubst %.c,%.o,$(SRC_FILES) ) DEP_FILES:=$(patsubst %.c,%.d,$(SRC_FILES) ) #SRC_FILES:=$(addprefix $(SRC_DIR),$(SRC_FILES))#OBJ_FILES:=$(addprefix $(OBJ_DIR),$(OBJ_FILES))DEP_FILES:=$(addprefix $(OBJ_DIR),$(DEP_FILES))FLAG_DEBUG=-gFLAG_COMPLE=-cFLAG_LINK=ifeq ($(DEBUG),1)OUTPUT_DIR:=$(DEBUG_DIR)FLAG_COMPLE:=$(FLAG_COMPLE) $(FLAG_DEBUG)FLAG_LINK:=elseOUTPUT_DIR:=$(RELEASE_DIR)FLAG_COMPLE:=$(FLAG_COMPLE)FLAG_LINK:=endifOUT=$(OUTPUT_DIR)$(OUTPUT_FILE)$(OUT): $(OBJ_FILES)@echo 1@$(CC) $^ -o $@%.o:%.c %.d@echo 2.1@$(CC) $(FLAG_COMPLE) $< -o $@$(OBJ_DIR)%.d:%.c@echo 3@$(CC) $< -MM -MD -o $@# if the system-libs will always update, please ues this instead for#$(CC) $< -M -o $@-include $(DEP_FILES)config: dirdir:mkdir -p $(SRC_DIR)mkdir -p $(OBJ_DIR)mkdir -p $(LIB_DIR)mkdir -p $(DEBUG_DIR)mkdir -p $(RELEASE_DIR)clean:rm -f $(OBJ_DIR)* *.d *.orm -f $(OUT)clearrebuild: clean allcleanall:rm -f $(OBJ_DIR)*rm -f $(RELEASE_DIR)*rm -f $(DEBUG_DIR)*test:$(OUT).PHONY: all config rebuild#.SUFFIXES:

读书人网 >编程

热点推荐