#配置选项,可以是DEBUG和RELEASE
CONFIG ?= RELEASE
#语言配置,可以是chs(简体中文)、cht(繁体中文)等等
Region ?= chs
#源文件目录
SOURCE_DIR = ./src
#文件包含目录
INCLUDE_DIR = -I ./include
INCLUDE_DIR += -I ./src/config
#需要额外定义的宏
EXT_MICROS := -D'GAME_SERVER'
#输出目录
EBIN_DIR := ebin
#以下内容请不要随意修改
ifeq ($(CONFIG),DEBUG)
FLAGS := +debug_info
else
FLAGS := -D'RELEASE'
endif
FLAGS += ${EXT_MICROS}
FLAGS += -DRegion="$(Region)"
define walk
$(wildcard $(1)/*.erl) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
#源文件目录下的所有Erlang文件
AllFiles = $(call walk, $(SOURCE_DIR))
#配置文件目录下的所有Erlang文件
AllCfgFiles = $(call walk, $(SOURCE_DIR)/config)
#指定语言的配置文件
SpecRegionCfgFiles = $(call walk, $(SOURCE_DIR)/config/$(Region))
#剔除所有的配置文件
NoCfgFiles = $(filter-out $(AllCfgFiles),$(AllFiles))
#加上指定语言的配置文件
NeedAllFiles = $(NoCfgFiles)
NeedAllFiles += $(SpecRegionCfgFiles)
OBJS = $(patsubst %.erl,%.beam,$(NeedAllFiles))
ERLC = erlc -W $(FLAGS) -o ${EBIN_DIR} $(INCLUDE_DIR)
all: dir compile
clean:
rm -rf $(EBIN_DIR)
dir:
mkdir -p $(EBIN_DIR)
compile:${OBJS}
%.beam:%.erl
${ERLC} $<