【问题标题】:How to properly use the deps folder in an Erlang project?如何在 Erlang 项目中正确使用 deps 文件夹?
【发布时间】:2013-11-13 04:36:56
【问题描述】:

我的假设是,erlang 项目的 deps 文件夹应该包含指向其他项目和应用程序的 符号链接,因此该项目中的所有模块都可以可以访问/可见。

例如,我的项目名为 project_final 应该从 project_aapplication_b 访问模块。它们的目录结构如下:

注意:因为我使用的是 GIT,所以项目有双重结构,所以它们不是直接的兄弟姐妹,而是放在 /projects/project_X/projectX/etc... 我相信这是一个问题。任何更好的建议如何管理这个?

/projects/project_a/project_a : 包含 (ebin, include, src) /projects/application_b/application_b : 包含 (ebin, include, src)

/project/pro_final:

  • deps:具有指向 project_a 和 application_b 的 符号链接
  • ebin
  • 包括
  • src : 包含使用 project_a 和 applicabion_b 模块功能的模块,但给出异​​常错误:未定义函数

我是如何执行 project_final 测试模块的:

cd /projects
erl -env ERL_LIBS "."
myprojectfinalmodule:test().
** exception error: undefined function project_a:test/0

project_a:test 模块已导出且正确。

【问题讨论】:

  • 如果我不使用 rebar,RichardC 建议不要使用 deps(使用 lib 目录)。虽然在上面的问题中,要解决,我能够使用额外的 ERL_LIB 通用路径正常运行,例如 ERL_LIBS ".:./myprojectname/deps" 其中 deps (或'lib',无论你想调用它)是所有相关应用程序和项目的共同父项。

标签: erlang


【解决方案1】:

deps 目录是 Rebar 约定,除了通过 Rebar 之外,可能不应该以任何其他方式进行管理。如果您不使用 Rebar,请不要将依赖项放在应用程序的子目录中,而是将您的各个应用程序放在公共 lib/ 目录下,并使用 ERL_LIBS 环境变量(请参阅http://erlang.org/doc/man/code.html)告诉 Erlang 在哪里寻找应用程序。

【讨论】:

    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2011-01-31
    • 2020-04-15
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    相关资源
    最近更新 更多