设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 20328|回复: 1
打印 上一主题 下一主题

不同环境下批量编译.erl文件

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 19:10:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 茶叶feng 于 2018-7-9 13:58 编辑

1.linux下使用makefile来批处理.erl文件,下面是makefile内容
  1. # 根目录
  2. SHELL_DIR := $(shell pwd)
  3. # 目标文件目录
  4. EBIN_DIR := $(SHELL_DIR)/ebin
  5. # 源文件目录
  6. SRC_DIR := $(SHELL_DIR)/src
  7. # 引用文件目录
  8. INCLUDE_DIR := $(SHELL_DIR)/include

  9. # 单文件编译脚本
  10. ERLC := erlc -o $(EBIN_DIR) -I $(INCLUDE_DIR) -pa $(EBIN_DIR)

  11. # 获取指定目录下.erl文件
  12. define trav
  13.     $(wildcard $(1)/*.erl)
  14. endef

  15. # 编译文件
  16. all:dir compile cp

  17. # 获取src目录下所有.erl文件
  18. ALLFILES := $(call trav, $(SRC_DIR))

  19. # 所有.beam文件路径
  20. NEEDFILES := $(patsubst %.erl, %.beam, $(ALLFILES))

  21. # 生成目标路径
  22. dir:
  23.     mkdir -p $(EBIN_DIR)

  24. # 执行编译
  25. compile:$(NEEDFILES)

  26. # 生成.app文件
  27. cp:
  28.     cp -a $(SRC_DIR)/tman.app.src $(EBIN_DIR)/tman.app

  29. # beam文件生成公式
  30. %.beam:%.erl
  31.     ${ERLC} [        DISCUZ_CODE_12        ]lt;
复制代码

2. windows下面批量编译.erl文件,下面是cmd中输入的命令
  1. for %f in (src/*.erl) do erlc -o ebin src/%f
复制代码
3.想要使用erlang自带的make模块来批量编译文件,因为make模块需要用到Emankefile文档,所以下面需要两个文件配合使用,Makefile和Emakefile一起用

  • Makefile
  1. erl:compile

  2. compile:
  3.     erl -pa ./ebin -noinput \
  4.     -eval "case make:all() of up_to_date -> halt(0); error -> halt(1) end"
复制代码

  • Emakefile
  1. {"src/*", [report, verbose, {i, "include"}, {outdir, "ebin"}]}.
复制代码
当Makefile执行erl的-eval参数的时候,就回调用make:all/0,它就会寻找Emakefile文件然后根据参数编译文件


在这个平台做个记录,大佬欢迎来喷

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
发表于 2018-7-6 21:05:54 | 只看该作者
谢谢 分享。Emakefile 比较好用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-11-1 08:13 , Processed in 0.362063 second(s), 9 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表