{erl_opts, [ debug_info, {i, "./_build/default/plugins/gpb/include"} ]}. {plugins, [ {rebar3_gpb_plugin, ".*", {git, "https://github.com/lrascao/rebar3_gpb_plugin.git", {tag, "2.23.8"}}} ]}. % ====================== % 核心:强制指定 proto 路径 + 输出到你的 apps/sdlan % ====================== {gpb_opts, [ {i, "proto"}, % proto 文件路径 {src_dirs, ["proto"]}, % 源码目录(必须) recursive, % 递归查找 proto 文件 {module_name_suffix, "_pb"}, % 生成模块后缀 {o_erl, "src"}, % .erl 输出目录 {o_hrl, "include"}, % .hrl 输出目录 include_as_lib, % gpb.hrl 通过 -include_lib("gpb/include/gpb.hrl") {strings_as_binaries, true}, % proto string → Erlang binary type_specs, % 生成 type specs report, % 编译报告 verbose % 打印详细信息 ]}. {deps, [ {poolboy, ".*", {git, "https://github.com/devinus/poolboy.git", {tag, "1.5.1"}}}, {hackney, ".*", {git, "https://github.com/benoitc/hackney.git", {tag, "1.16.0"}}}, {jiffy, ".*", {git, "https://github.com/davisp/jiffy.git", {tag, "1.1.1"}}}, {cowboy, ".*", {git, "https://github.com/ninenines/cowboy.git", {tag, "2.12.0"}}}, {mysql, ".*", {git, "https://github.com/mysql-otp/mysql-otp", {tag, "1.8.0"}}}, {throttle, ".*", {git, "https://github.com/lambdaclass/throttle.git", {tag, "0.3.0"}}}, {dns_erlang, ".*", {git, "https://github.com/dnsimple/dns_erlang.git", {tag, "v4.4.0"}}}, {quicer, ".*", {git, "https://github.com/emqx/quic.git", {tag, "0.4.0"}}}, {pkt, ".*", {git, "https://github.com/msantos/pkt.git", {tag, "0.6.0"}}}, {sync, ".*", {git, "https://github.com/rustyio/sync.git", {branch, "master"}}} ]}. {provider_hooks, [ {pre, [ {compile, {protobuf, compile}}, {clean, {protobuf, clean}} ]} ]}. {relx, [{release, {sdlan, "0.1.0"}, [sdlan, sasl]}, {mode, dev}, {sys_config, "./config/sys.config"}, {vm_args, "./config/vm.args"}]}. {profiles, [{prod, [{relx, [{mode, prod}]}]}]}. {rebar_packages_cdn, "https://hexpm.upyun.com"}.