Erlang中文论坛
标题:
不同环境下批量编译.erl文件
[打印本页]
作者:
茶叶feng
时间:
2018-6-27 19:10
标题:
不同环境下批量编译.erl文件
本帖最后由 茶叶feng 于 2018-7-9 13:58 编辑
1.linux下使用makefile来批处理.erl文件,下面是makefile内容
# 根目录
SHELL_DIR := $(shell pwd)
# 目标文件目录
EBIN_DIR := $(SHELL_DIR)/ebin
# 源文件目录
SRC_DIR := $(SHELL_DIR)/src
# 引用文件目录
INCLUDE_DIR := $(SHELL_DIR)/include
# 单文件编译脚本
ERLC := erlc -o $(EBIN_DIR) -I $(INCLUDE_DIR) -pa $(EBIN_DIR)
# 获取指定目录下.erl文件
define trav
$(wildcard $(1)/*.erl)
endef
# 编译文件
all:dir compile cp
# 获取src目录下所有.erl文件
ALLFILES := $(call trav, $(SRC_DIR))
# 所有.beam文件路径
NEEDFILES := $(patsubst %.erl, %.beam, $(ALLFILES))
# 生成目标路径
dir:
mkdir -p $(EBIN_DIR)
# 执行编译
compile:$(NEEDFILES)
# 生成.app文件
cp:
cp -a $(SRC_DIR)/tman.app.src $(EBIN_DIR)/tman.app
# beam文件生成公式
%.beam:%.erl
${ERLC} [ DISCUZ_CODE_12 ]lt;
复制代码
2. windows下面批量编译.erl文件,下面是cmd中输入的命令
for %f in (src/*.erl) do erlc -o ebin src/%f
复制代码
3.想要使用erlang自带的make模块来批量编译文件,因为make模块需要用到Emankefile文档,所以下面需要两个文件配合使用,Makefile和Emakefile一起用
Makefile
erl:compile
compile:
erl -pa ./ebin -noinput \
-eval "case make:all() of up_to_date -> halt(0); error -> halt(1) end"
复制代码
Emakefile
{"src/*", [report, verbose, {i, "include"}, {outdir, "ebin"}]}.
复制代码
当Makefile执行erl的-eval参数的时候,就回调用make:all/0,它就会寻找Emakefile文件然后根据参数编译文件
在这个平台做个记录,大佬欢迎来喷
作者:
dreamxyp
时间:
2018-7-6 21:05
谢谢 分享。Emakefile 比较好用
欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/)
Powered by Discuz! X3.3