使用Makefile编译Erlang
#配置选项,可以是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} $<
祝,玩得开心!
E_Mail:witton@163.com
E_Mail:witton@163.com