`

写个makefile编译erlang_protobuffs

阅读更多
erlang_protobuffs源码下载地址:
https://github.com/basho/erlang_protobuffs

  因为这个项目是用rebar编译的,本人比较笨 ,不会玩rebar,所以就提取了src文件夹里面的代码,自己写了个makefile来编译


下面就来记录一下我的实验步骤
1 创建项目目录结构
cd /data
mkdir -p protobuffs/{ebin,hrl,proto,scripts,src/{include,mod}}


2 导入源文件到src/mod目录下


3 这里有个注意事项:里面有protobuffs_parser.yrl和protobuffs_scanner.xrl文件,
有两种处理方法:
  1 先编译成erl文件,然后下面的makefile编译规则就不用加上yrl和xrl(具体看makefile)
    编译方法:
直接在src/mod目录下执行:
erlc protobuffs_parser.yrl protobuffs_scanner.xrl
或者运行erl环境
erl
yecc:file(protobuffs_parser).
leex:file(protobuffs_scanner).

  2 不编译成erl文件,然后下面的makefile编译规则要加上yrl和xrl
模式规则
%.beam : %.erl %.yrl %.xrl
    erlc $<


4 写makefile
  1 inlcude.mk:放到hrl目录下

  2 Makefile:在src目录下创建

  3 在src/目录下,执行make


5 测试
  1 在proto/目录下创建proto文件

  2 在scripts目录下创建all.proto导入proto/目录下的所有proto文件

  3 写个shell脚本控制生成proto

  4 执行

  5 为什么会报no_abstract_code错误呢,这涉及编译的问题,pokemon_db.beam要生成the form of abstract code 所以修改include.mk:
ERLC := erlc +debug_info(参考erlang手册里面的compile模块)
  6 重新编译一次,然后再执行./create_erl_proto


6 最后,自己可以写个控制脚本来控制编译代码和生成proto。下面是我整理好的代码,有兴趣的可以下载看看。本人水平比较低,有问题谢谢指教
  • 大小: 3.8 KB
  • 大小: 14 KB
  • 大小: 14.9 KB
  • 大小: 9.3 KB
  • 大小: 9.7 KB
  • 大小: 7.4 KB
  • 大小: 2.6 KB
  • 大小: 4.7 KB
  • 大小: 9.4 KB
  • 大小: 12.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics