#配置选项,可以是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} $<

使用Makefile编译Erlang的更多相关文章

  1. gcc与makefile编译 BY 四喜三顺

    gcc编译控制过程:(假设源代码为a.c)(1)源文件到预处理文件:    gcc -E -o a.cxx a.c    a.cxx显示调用哪些头文件(2)生成汇编代码:              g ...

  2. 【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间

    打算学习一下Linux,这两天先看了一下gcc的简单用法以及makefile的写法,今天是周末,天气闷热超市,早晨突然发现住处的冰箱可以用了,于是先出去吃了点东西,然后去超市买了一坨冰棍,老冰棍居多, ...

  3. Linux Makefile 编译速度的优化【转】

    转自:https://blog.csdn.net/QQ1452008/article/details/51851801 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...

  4. live555学习(一)通读Makefile编译live555

    live555学习(一)通读Makefile编译live555 live555 编译live555 学习开源 live555学习(一)通读Makefile编译live555 前言 live555简介 ...

  5. makefile 编译指定目录

    makefile 编译指定目录 sub1=test1 sub2=test2 subs = sub1 sub2 SUBDIRS =$(foreach i, $(subs), $($(i))) .PHON ...

  6. C++---初识《通过g++ / makefile 编译和调用动态库so文件》(ubuntu)

    C++---初识<通过g++ / makefile  编译和调用动态库so文件>(ubuntu) ------------------------目录------------------- ...

  7. CMake 工程调用 Makefile 编译项目

    本文主要介绍如何将一个依赖 Makefile 项目(MIDG)移植到 CMake 上. 首先介绍项目文件结构,文件主要由三个目录组成 3rdParty include src 其中,3rdParty ...

  8. Makefile编译库

    funs.h: #ifndef __FUNS_H__ #define __FUNS_H__ void fun1(); #endif funs.c #include "funs.h" ...

  9. windows下如何使用makefile编译

    1. 编写makefile. 2. 使用nmake进行编译, vs2010或者其他都是用nmake进行编译的,将bin目录添加到path环境变量中 先执行vcvars32.bat 再执行nmake

随机推荐

  1. 【LeetCode】抽样 sampling(共4题)

    第一部分 水塘抽样 reservoir sampling 水塘抽样的原理:(应该开一篇新文章)pssss [382]Linked List Random Node (2018年11月15日,新算法) ...

  2. mongodb 多表关联处理 : 内嵌以及连接(手动引用、DBref) 、aggregate中$lookup

    MongoDB与关系型数据库的建模还是有许多不同,因为MongoDB支持内嵌对象和数组类型.MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link).那么何时Embed何时Li ...

  3. hadoop集群常见问题解决

    1:namenode启动 datanode未启动 解决: /hadoop/tmp/dfs/name/current VERSION 查看截取id 与 data/current VERSION集群ID ...

  4. 第05章 AOP细节

    第05章 AOP细节 1.切入点表达式 1.1 作用 通过表达式的方式定位一个或多个具体的连接点. 1.2 语法细节 ①切入点表达式的语法格式 execution([权限修饰符] [返回值类型] [简 ...

  5. 【挖坟】HDU3205 Factorization

    分圆多项式 问题在于精度貌似出了一些奇怪的问题... [输出也写的有问题QAQ] 完全不会处理了 加上全网没有题解T^T 挖个坑以后补.. #include<cstdio> #includ ...

  6. 攻防世界 WEB篇

    0x01 ics-06 查看源码发现:index.php 一开始直接用sqlmap跑了下没有发现注入,然后用brupsuite爆破参数 0x02 NewsCenter SQL注入中的POST注入,查阅 ...

  7. python slot

    每个实例包含一个字典,slot 让实例变成tup 或list,减少内存,但不能再增加属性 For classes that primarily serve as simple data structu ...

  8. HTML最全标签

    一.HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(DTD).   标签:a 说明:标明超链接的起始或目的位置.   标签:acronym 说明:标明缩写词.   ...

  9. jmeter_使用命令行运行

    使用非GUI模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源. Windows下以命令行模式运行的方法: 1.命令介绍 jmeter -n -t <testfile f ...

  10. Flink水印机制(watermark)

    Flink流处理时间方式 EventTime 时间发生的时间,例如:点击网站上的某个链接的时间 IngestionTime 某个Flink节点的source operator接收到数据的时间,例如:某 ...