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