%% 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 ]}.