erlang - rebar:缺少应用程序目录

标签 erlang rebar reltool

我正在测试钢筋

  • Windows 8 64Bis
  • Erlang 64 位 R15B02

我已经从 github 代码编译了 rebar 并创建了一个基本应用程序

$ mkdir testapp; cd testapp
$ mkdir rel
$ rebar create-app appid=testapp
$ echo "{sub_dirs, ["rel"]}." > rebar.config
$ cd rel
$ rebar create-node nodeid=testnode
$ cd -
$ rebar compile
$ rebar generate    
ERROR: generate failed while processing testapp/rel: {'EXIT',{{badmatch,{error,"testapp: : Missing application directory."}
...

我正在阅读 reltool 文档,但找不到有关应用程序目录的任何内容,唯一相关的选项是 incl_cond 但默认由 rebar 命令定义

src/testapp.app.src

{application, testapp,
 [
  {description, ""},
  {vsn, "1"},
  {registered, []},
  {applications, [
                  kernel,
                  stdlib
                 ]},
  {mod, { testapp_app, []}},
  {env, []}
 ]}.

rel/reltool.config

{sys, [
       {lib_dirs, []},
       {erts, [{mod_cond, derived}, {app_file, strip}]},
       {app_file, strip},
       {rel, "testapp", "1",
        [
         kernel,
         stdlib,
         sasl,
         testapp
        ]},
       {rel, "start_clean", "",
        [
         kernel,
         stdlib
        ]},
       {boot_rel, "testapp"},
       {profile, embedded},
       {incl_cond, derived},
       {mod_cond, derived},
       {excl_archive_filters, [".*"]}, %% Do not archive built libs
       {excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)",
                           "^erts.*/(doc|info|include|lib|man|src)"]},
       {excl_app_filters, ["\.gitignore"]},
       {app, testapp, [{mod_cond, app}, {incl_cond, include}]}
      ]}.

{target_dir, "testapp"}.

{overlay, [
           {mkdir, "log/sasl"},
           {copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},
           {copy, "files/nodetool", "\{\{erts_vsn\}\}/bin/nodetool"},
           {copy, "files/testapp", "bin/testapp"},
           {copy, "files/testapp.cmd", "bin/testapp.cmd"},
           {copy, "files/start_erl.cmd", "bin/start_erl.cmd"},
           {copy, "files/install_upgrade.escript", "bin/install_upgrade.escript"},
           {copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},
           {copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"}
          ]}.

最佳答案

就我而言,我必须修改默认的 rel/reltool.config

   {lib_dirs, []},

   {lib_dirs, ["../../"]},

我的项目布局在哪里:

Makefile
ebin/   
rebar.config
rel/    
src/

关于erlang - rebar:缺少应用程序目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13485541/

相关文章:

testing - 使用通用测试的模块的 Erlang 测试(非导出/私有(private))功能

erlang - 如何运行使用 Rebar 分布式的应用程序?

erlang - 为什么脚本无法运行?

mysql - erlang mysql 结果到 xml

Erlang 发布 Rebar : What am I missing?

erlang - 如何使用不同的名称启动钢筋应用程序两次或多次?

Erlang SIP 客户端库

http - 在 Erlang 中读取接收到的 HTTP 请求的主体

erlang - rabbitmq-erlang-client,使用 rebar 友好的 pkg,在开发环境上工作在 rebar 版本上失败