使用Makefile编译Erlang
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #配置选项,可以是 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 } $< |
祝,玩得开心!
E_Mail:witton@163.com
E_Mail:witton@163.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)