Files
rebar_server/game_server/rebar.config
T
2026-05-19 11:30:21 +08:00

217 lines
9.3 KiB
Erlang

%% rebar.config配置规则
%% 1、apps下所有app共用的配置,写在最外层rebar.config中(即本文件配置)
%% 2、指定app及其依赖app共用的配置,写在最外层rebar.config中的profiles
%% 3、单独app使用的配置,写在app自身目录下的rebar.config
%% 编译参数,所有app共用,如编译game_server,会与game_server/rebar.config下的erl_opts合并
{erl_opts, [
%% {feature, maybe_expr, enable},
%% 根据操作系统定义全局宏
{platform_define, "(linux|solaris|freebsd|darwin)", 'LINUX'},
{platform_define, "win32", 'WINDOWS'},
% {d, 'EXTERNAL'},
%% debug模式
debug_info,
{i, "apps/base/include"},
{i, "apps/ms_cache/include"},
{i, "apps/ms_tbllog/include"},
%% Decompiled sources expand many included records/types inline.
%% Keep warnings visible where useful, but do not fail the build on them.
nowarn_unused_record,
nowarn_unused_type,
{parse_transform, ms_parse_transform}
]}.
%% 第三方依赖库,所有app共用
{deps, [
ranch
, cowboy
, cowlib
, ibrowse
, euneus
, jsx
, mysql
, mysql_poolboy
, poolboy
, recon
, erlperf
, gpb
, enif_protobuf
, nif_util
]}.
%% 插件,所有app共用,这个也可以只配置在使用的app下的rebar.config下,但是这样就需要进入app目录去执行
{plugins, [
{rebar3_cache_plugin, "0.1.0"} %% 缓存插件
, {rebar3_tbllog_plugin, "0.1.0"} %% T后台日志插件
, {rebar3_gpb_plugin, "2.19.0"} %% gpb协议插件
, {rebar3_gen_mod_plugin, "0.1.0"} %% 模块开发目录文件自动生成插件
, {rebar3_user_default_plugin, "0.1.0"} %% user_default.erl文件自动生成插件
, {rebar3_cfg_modify_plugin, "0.1.0"} %% 配置表二次加工
]}.
{post_hooks, [
{"(linux|solaris|freebsd|darwin)", clean, "rm -fr rebar3.crashdump log apps/game_config/src/auto_gen"},
{"win32", clean, "if exist rebar3.crashdump del /f/q rebar3.crashdump"},
{"win32", clean, "if exist log rd /s/q log"},
{"win32", clean, "if exist .\\apps\\game_config\\src\\auto_gen rd /s/q .\\apps\\game_config\\src\\auto_gen"}
]}.
{provider_hooks, [
{pre, [
{compile, {protobuf, compile}}
, {compile, {cache, compile}}
, {compile, {tbllog, compile}}
, {compile, {cfg_modify, gen}}
]}
]}.
%% 每个app私有的配置信息
{profiles, [
{game_server_dev, [
{project_app_dirs, ["apps/base", "apps/ms_cache", "apps/ms_tbllog", "apps/game_config", "apps/game_proto", "apps/game_server"]},
{erl_opts, [{src_dirs, ["src", "db_patch", "db_merge", "db_clear"]}]}
]},
{game_server, [
%% 项目相关的app目录,只有配置在最外层的rebar.config才会生效
%% 注意,以下的参数设置都是同时对project_app_dirs列举的参数生效,如果是game_server独有的,需要配置到game_server/rebar.config
%% windows下这个目录并不能指定编译顺序,需要在game_server.app.src中指定依赖
{project_app_dirs, ["apps/base", "apps/ms_cache", "apps/ms_tbllog", "apps/game_config", "apps/game_proto", "apps/game_server"]},
{erl_opts, [{src_dirs, ["src", "db_patch", "db_merge", "db_clear"]}]},
%% shell钩子,pre_hooks编译前执行 post_hooks编译后执行
{pre_hooks, [
]},
%% 发布配置, 只能配置在最外层rebar.config
{relx, [
{release, {game_server, "0.1.0"},
[
sasl, runtime_tools, syntax_tools, compiler, observer, tools, ranch, cowboy, cowlib,
ibrowse, euneus, mysql, mysql_poolboy, recon, enif_protobuf, nif_util, {base, load},
ms_cache, ms_tbllog, {game_config, load}, {game_proto, load}, game_server
]
},
%% 指定config/sys.config为启动的配置信息,打包时会将该文件拷贝到版本release目录中,该文件的内容为执行根目录的sys.config路径
{sys_config, "config/sys.config"},
%% 指定config/vm.args为启动的虚拟机参数,打包时会将该文件拷贝到版本release目录中,根目录下有vm.args,故这里的vm.args没用
{vm_args, "config/vm.args"},
{dev_mode, false},
{include_erts, true},
{include_src, false},
{extended_start_script, true},
{overlay, [
%% 创建发布版config目录
{mkdir, "config"},
%% 拷贝配置到发布版根目录下
{copy, "config/sys_game.config", "sys.config"}, %% 上面拷贝到releases目录中的sys.config,指向的配置为根目录的sys.config
{copy, "config/vm_game.args", "vm.args"}, %% 启动服务器会优先使用游戏根目录的启动参数文件(vm.args),如果根目录没有则使用版本目录releases下的vm.args
%% 拷贝配置到发布版config目录下
{copy, "config/cron_game.tab", "config/cron_game.tab"},
%% 创建发布版sql目录
{mkdir, "sql"},
%% 拷贝sql文件到发布版sql目录下
{copy, "apps/game_server/sql/game_init.sql", "sql/game_init.sql"},
{copy, "apps/game_server/sql/center_init.sql", "sql/center_init.sql"},
{copy, "apps/game_server/sql/cross_init.sql", "sql/cross_init.sql"},
{copy, "apps/game_server/sql/game_merge.sql", "sql/game_merge.sql"},
{copy, "apps/game_server/sql/game_update.sql", "sql/game_update.sql"},
{copy, "apps/game_server/sql/log_init.sql", "sql/log_init.sql"},
{copy, "apps/game_server/sql/log_merge.sql", "sql/log_merge.sql"},
{copy, "apps/game_server/sql/log_update.sql", "sql/log_update.sql"}
]}
]}
]},
{login_server, [
%% 项目相关的app目录
{project_app_dirs, ["apps/base", "apps/login_server"]},
{relx, [
%% 登录服
{release, {login_server, "0.1.0"},
[
sasl, runtime_tools, syntax_tools, compiler, observer, tools, mnesia, ranch, cowboy, cowlib, ibrowse,
euneus, mysql_poolboy, recon, {base, load}, login_server
]
},
%% 指定config/sys.config为启动的配置信息,打包时会将改文件拷贝到版本release目录中,该文件的内容为执行根目录的sys.config路径
{sys_config, "config/sys.config"},
%% %% 指定config/vm.args为启动的虚拟机参数,打包时会将改文件拷贝到版本release目录中,根目录下有vm.args,故这里的vm.args没用
{vm_args, "config/vm.args"},
{dev_mode, false},
{include_erts, true},
{include_src, false},
{extended_start_script, true},
{overlay, [
%% 拷贝配置到发布版根目录下
{copy, "config/sys_login.config", "sys.config"},
{copy, "config/vm_login.args", "vm.args"},
%% 创建发布版sql目录
{mkdir, "sql"},
%% 拷贝sql文件到发布版sql目录下
{copy, "apps/login_server/sql/game_init.sql", "sql/login_init.sql"},
{copy, "apps/login_server/sql/game_merge.sql", "sql/login_merge.sql"}
]}
]}
]},
{client_server, [
%% 项目相关的app目录 (这里决定了编译哪些app, 决定编译顺序??)
{project_app_dirs, ["apps/base", "apps/game_config", "apps/game_proto", "apps/client_server"]},
{relx, [
%% 压测机器人
{release, {client_server, "0.1.0"},
[
sasl, runtime_tools, syntax_tools, compiler, observer, tools, ranch, cowboy, cowlib, ibrowse,
euneus, mysql_poolboy, recon,{base, load}, {game_config, load}, {game_proto, load}, client_server
]
},
%% 指定config/sys.config为启动的配置信息,打包时会将改文件拷贝到版本release目录中,该文件的内容为执行根目录的sys.config路径
{sys_config, "config/sys.config"},
%% %% 指定config/vm.args为启动的虚拟机参数,打包时会将改文件拷贝到版本release目录中,根目录下有vm.args,故这里的vm.args没用
{vm_args, "config/vm.args"},
{dev_mode, false},
{include_erts, true},
{include_src, false},
{extended_start_script, true},
{overlay, [
%% 创建发布版config目录
{mkdir, "config"},
%% 拷贝配置到发布版config目录下
{copy, "config/sys_client.config", "sys.config"},
{copy, "config/vm_client.args", "vm.args"}
]}
]}
]},
{config_check, [
{project_app_dirs, ["apps/game_config"]},
{overrides, [
{override, [
{provider_hooks, [
{pre, [{compile, {cfg_modify, test}}]}
]}
]}
]}
]}
]}.
{xref_checks, [
undefined_function_calls, locals_not_used,
deprecated_function_calls, deprecated_functions
]}.