我阅读并重新阅读了文档和教程,但是我对如何创建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:找不到包含lib“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, []}
]}.
答案 0 :(得分: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
答案 1 :(得分:0)
在您的情况下使用ERL_LIBS
,您需要将其设置为/.../learn1/apps
。
编译时,您还可以添加{i,Dir}选项。 然而,根据documentation,它只提到-include和-include_dir,而不是-include_lib。
{i,Dir}将Dir添加到要搜索的目录列表中 包括一个文件。遇到-include或-include_dir时 指令,编译器在下面搜索头文件 目录:
“。”,文件服务器的当前工作目录;
已编译文件的基本名称;
使用i选项指定的目录。指定的目录 最后一次搜索。