217 lines
9.3 KiB
Erlang
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
|
|
]}.
|