2

我反复阅读文档和教程,但我对如何创建 Erlang 应用程序以及 Rebar 的理解仍然有足够的漏洞来模仿瑞士奶酪。非常简单的东西把我扔了。

我正在努力发布一个 Erlang 版本,该版本最终将包括我自己的几个应用程序以及 Webmachine,也许还有一种或另一种风格的 nosql db。使用 Rebar 我已经成功编译并测试了我的应用程序:ZZZ 和 ZZZ_Lib。我的目录结构如下所示。我不确定它是否是最佳的,但它确实有效。

我已经在 ...learn1/apps 目录下安装了 Webmachine。

我的下一步是将 Webmachine 与下面显示的名为 test_resource:erl 的非常简单的 webmachine_demo_resource 集成。

http://webmachine.basho.com/example_resources.html

但是当我尝试编译时,我收到以下错误消息:

src/test_resource.erl:3:找不到包含库“webmachine/include/webmachine.hrl”

这是 test_resource.erl 中的违规行:

-include_lib("webmachine/include/webmachine.hrl").

我试图设置 ERL_LIBS (我不完全理解)和 PATH 都没有成功。所以,很明显,我不明白如何设置正确的路径或如何最好地集成 Webmachine。

任何和所有的指导将不胜感激。

LRP

*目录结构

learn1$ ls apps rebar rebar.config

learn1/apps$ ls webmachine zzz zzz_lib

learn1/apps/zzz_lib/src$ ls yada yada test_resource.erl yada yada

* rebar.config

{sub_dirs,
    ["apps/zzz",
     "apps/zzz/src",
     "apps/zzz_lib",
     "apps/zzz_lib/src"
    ]
}.

* zzz_lib.app.src

{application, zzz_lib,
  [
  {description, ""},
  {vsn, "1"},
  {modules, [
      yada yada 
]},
{applications, [
              kernel,
              stdlib,
              webmachine
             ]},
{mod, { zzz_lib_app, []}},
{env, []}
]}.
4

2 回答 2

5

您很可能最终会更高兴将其作为依赖项,而不是作为包含的应用程序。例如,看看 Riak Core 是如何做到的:https ://github.com/basho/riak_core/blob/master/rebar.config

为了更深入地了解,您可能会发现询问邮件列表是值得的:

http://lists.therestfulway.com/mailman/listinfo/webmachine_lists.therestfulway.com

http://lists.basho.com/mailman/listinfo/rebar_lists.basho.com

于 2011-09-15T20:07:47.637 回答
0

在您的情况下使用ERL_LIBS,您需要将其设置为/.../learn1/apps.

编译时,您还可以添加 {i, Dir} 选项。然而,根据文档,它只提到 -include 和 -include_dir,而不是 -include_lib。

{i,Dir} 将 Dir 添加到包含文件时要搜索的目录列表中。当遇到 -include 或 -include_dir 指令时,编译器会在以下目录中搜索头文件:

“.”,文件服务器的当前工作目录;

编译文件的基本名称;

使用 i 选项指定的目录。最后指定的目录首先被搜索。

于 2011-09-15T19:45:35.457 回答