我想在我的应用程序中使用一些库,例如 https://github.com/Panmind/erlang-ruby-marshal .该 repo 包含一个 src 目录,但没有 .app 文件(因为它不是应用程序),所以我不能使用 get-deps。
我尝试了另一种方法,添加了 库 sub_dirs 中的 dir 并将 repo 添加为 git 子模块,但 rebar 不会编译它的任何文件。我猜 rebar 只编译 otp 应用程序,而不仅仅是不绑定(bind)到应用程序的 .erl 文件。
你如何管理这些依赖关系?我想避免将文件复制到我的应用程序目录,因为我认为它们不属于那里,而且我有点喜欢 git 子模块方法,它允许我跟踪我正在使用的 lib 版本。
最佳答案
最近的钢筋支持依赖项的 raw
选项。当此选项是特定的时,rebar 不需要依赖项具有标准 Erlang/OTP 布局,该布局假定存在“src/dependency_name.app.src”或“ebin/dependency_name.app”文件(请参阅更多详细信息 here) .
例如:
{deps, [
{erlang_ruby_marshal, "",
{git, "https://github.com/Panmind/erlang-ruby-marshal", {branch, master}},
[raw]}
]}.
请注意,rebar 现在可以获取它,但它仍然无法编译它。正如其他评论者所指出的那样,这个依赖项没有理由不应该有一个
.app
文件。我会 fork 存储库并将 .app
文件添加到其中。
关于erlang - 使用钢筋处理外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5510559/