0

在我的 Erlang 应用程序中,我想使用外部库(erlzmq2)。我是 erlang 的新手,不知道如何打包或编译它。目前我正在使用 rebar 进行编译,如果答案是基于编辑 rebar.config 文件,那对我来说会更有用。

4

2 回答 2

5

幸运的是,您的库似乎是 rebar 打包的,因为它的rebar.configrepo 的根目录中有一个: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.erlin 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 回答