在我的 Erlang 应用程序中,我想使用外部库(erlzmq2)。我是 erlang 的新手,不知道如何打包或编译它。目前我正在使用 rebar 进行编译,如果答案是基于编辑 rebar.config 文件,那对我来说会更有用。
问问题
849 次
2 回答
5
幸运的是,您的库似乎是 rebar 打包的,因为它的rebar.config
repo 的根目录中有一个:https ://github.com/zeromq/erlzmq2
假设您还没有配置依赖项,您只需将其添加到您自己的rebar.config
:
{deps, [
{erlzmq2, "2.*", {git, "git://github.com/zeromq/erlzmq2", {tag, "2.1.11"}}}
]}.
这可以添加“2.1.11”版本。你也可以对着 head 工作:
{deps, [
{erlzmq2, "3.*", {git, "git://github.com/zeromq/erlzmq2"}}
]}.
“deps”条目的格式是
- 应用程序的名称,如其 x.app 文件(erlzmq2.app.src 第 1 行)所示
- 与 x.app 文件(erlzmq2.app.src,第 4 行)中的“vsn”匹配的正则表达式。如果你想绕过这个健全性检查,你可以使用“.*”。
- 一个元组,给出了可以从中获取依赖项的位置。在 的情况下,除了 URL 之外
git
,您还可以给它一个branch
或元组。tag
我认为,用 Rebar 和 Reltool 打包你的应用程序是一个全新的问题,而且是一个复杂的问题。但是,如果您的应用程序相当小/一次性/非正式,您可以尝试 Rebar 的“escriptize”命令。
如果您的应用程序是“foo”,您将需要一个foo.erl
in src 具有适当的main/1
. 然后添加到您的rebar.config
:
{escript_incl_apps, [erlzmq2]}.
并从命令行(在获得代表和编译之后)运行
钢筋描述
Rebar 会将您的所有二进制文件和“encrypt_incl_apps”的二进制文件填充到作为可执行文件运行的单个文件中。
于 2013-10-19T17:39:25.987 回答
0
只是为了获得更多附加信息,如果这与钢筋不兼容,您可以创建一个名为 lib 的单独文件夹并将 lib 路径导出到 ERL_LIBS。如果库足够好,您可以将其放在 OTP lib 目录中,但不推荐这样做!
于 2013-10-21T14:49:52.117 回答