使用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} \)<
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2016/2016-01-26-使用Makefile编译Erlang/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。