#配置选项,可以是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. 【串线篇】Mybatis拓展之MBG

    MBG-逆向工程 一.介绍 MBG:MyBatis Generator:代码生成器: MyBatis官方提供的代码生成器:帮我们逆向生成: 正向: table----javaBean---BookDa ...

  2. linux清理缓存

    在free -h中查看自己的内存发现在运行一段时间后,有很多内存都被缓存占用, 所以要清理下缓存,增大可用内存 直接进入root账户,输入以下命令 echo 3 > /proc/sys/vm/d ...

  3. Python基础教程(017)--执行Python的方式解释器运行及其他几种解释器简介

    前言 了解Python的解释器 内容 Python的解释器乳交有多个语言的实现 cPython---官方版本的C语言实现 Jython--可以运行在java平台 IronPython--可以运行在.n ...

  4. python3下tomorow模块报语法错误def async(n, base_type, timeout=None): ^ SyntaxError: invalid syntax

    python3 pip 安装tomorrow模块,调用时候会报错:def async(n, base_type, timeout=None): ^ SyntaxError: invalid synta ...

  5. 1-什么是 Prometheus

    什么是 Prometheus Prometheus 是由 SoundCloud 开源监控告警解决方案,从 2012 年开始编写代码,再到 2015 年 github 上开源以来,已经吸引了 9k+ 关 ...

  6. linux记事工具:RedNotebook Lifeograph Kontact ThotKeeper

    Linux桌面有许多灵活而功能强大的日记工具,如支持标签.加密.多种日志模版和实时搜索.其中的优秀者包括: RedNotebook Lifeograph Kontact ThotKeeper

  7. linux从head.s到start_kernelstart_kernel之---内核解压到重定位分析

    一: arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息.符号 ...

  8. 八. jenkins参数化构建 git分支

    使用git管理代码时往往会有多分支开发,这时部署通过修改配置不试用.可以通过参数化构建. 1.通过字符参数方式 新建一个maven项目,选择参数化构建过程-字符参数,如下: 源码管理中配置如下: 其它 ...

  9. 109、TensorFlow计算张量的值

    # 当计算图创建成功时 # 你就可以运行这个计算图,然后生成一个新的张量 # 并且得到这个张量指向的计算图中具体的数值 #这个功能在debug的时候非常有必要 #最简单获得张量具体值的方法是使用Ten ...

  10. 显示等待WebDriverWait+lambda

    代码,关键代码标红 参考文章:https://www.cnblogs.com/yoyoketang/p/6517477.html #coding:utf-8 ''' 这里写了一个百度搜索页的pageo ...