gpt4 book ai didi

Erlang:*.hrl 文件在多个应用程序中的位置

转载 作者:行者123 更新时间:2023-12-01 01:07:31 25 4
gpt4 key购买 nike

我正在开发一系列相关的应用程序,这些应用程序最终将集成到一个版本中。几个应用程序共享相同的记录结构。

我是不是该:

a) 在每个应用程序的包含目录中复制定义记录结构的 *.hrl 文件?
b) 将单个文件放在我的应用程序树中的其他位置——如果是这样,在哪里?

这是我当前的树:

zpt$
apps
app1
ebin
include
myrecords.hrl
priv
src
app2
ebin
include
myrecords.hrl
priv
src
etc

非常感谢,

本地资源计划

最佳答案

我尝试过的一种方法是创建一个不执行任何操作但包含多个项目共有的记录定义的应用程序。然后我使用 rebar 将其作为依赖项包含在内。当包含 hrl 文件时,我使用 include_lib句法。该语法允许您包含来自另一个应用程序的 hrl 文件。

app
ebin
include
priv
src
some_src.erl
deps
common_hrl_app
include
common_records.hrl
src
ebin
other_dep_app
src
other_src.erl
.
.
.
include_lib可能出现在 some_src.erl 或 other_src.erl 中的示例:
-include_lib("common_hrl_app/include/common_records.hrl").

我喜欢这种方法,因为:
  • 它与钢筋依赖系统很好地配合
  • 它允许我在版本控制中的一个位置跟踪 hrls
  • 我可以对这个应用程序进行版本控制,如果我希望一个新应用程序与另一个使用相同记录的应用程序兼容,这允许我提取特定版本。


  • 回答评论中的问题:

    我在 ebin 目录中有一个骨架应用程序文件,它指定了应用程序的名称和版本,以便 rebar 可以验证版本。这是一个例子
    {application,common_hrl_app,
    [{description,[]},
    {vsn,"1"},
    {registered,[]},
    {applications,[kernel,stdlib]},
    {env,[]},
    {modules,[]}]}.

    使用 rebar,您拥有顶级应用程序,它可以有多个应用程序作为依赖项。当 rebar 获取这些依赖项时,它会将它们放在 deps 目录中。如果这些应用程序中的任何一个有自己的依赖项,它们也会被提取到 deps 目录,依此类推。 deps 目录没有无限嵌套的层次结构。

    关于Erlang:*.hrl 文件在多个应用程序中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17529623/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com