本帖最后由 茶叶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一起用
- erl:compile
- compile:
- erl -pa ./ebin -noinput \
- -eval "case make:all() of up_to_date -> halt(0); error -> halt(1) end"
复制代码
- {"src/*", [report, verbose, {i, "include"}, {outdir, "ebin"}]}.
复制代码 当Makefile执行erl的-eval参数的时候,就回调用make:all/0,它就会寻找Emakefile文件然后根据参数编译文件
在这个平台做个记录,大佬欢迎来喷
|