本帖最后由 茶叶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文件然后根据参数编译文件 
 
 
在这个平台做个记录,大佬欢迎来喷 
 
 |