Erlang 如何跨多个模块包含.hrl文件rebar3

Erlang 如何跨多个模块包含.hrl文件rebar3,erlang,rebar,rebar3,relx,Erlang,Rebar,Rebar3,Relx,我有几个模块的目录。对于每个模块,我已经创建了include(包含*.hrl文件)和src(包含*.erl文件)文件夹。如何在不复制的情况下将*.hrl文件从一个模块共享到另一个模块 对于钢筋,我添加了{erl_opts,[{I,“foldercontainsincludile”}},效果很好 但是对于rebar3,编译失败了,因为它说找不到包含文件“include/xx.hrl”那么我认为您没有伞式项目,您只是在同一级别上有多个目录,每个目录都有自己的由rebar3管理的项目。 比如: roo

我有几个模块的目录。对于每个模块,我已经创建了
include
(包含
*.hrl
文件)和
src
(包含
*.erl
文件)文件夹。如何在不复制的情况下将
*.hrl
文件从一个模块共享到另一个模块

对于钢筋,我添加了
{erl_opts,[{I,“foldercontainsincludile”}}
,效果很好


但是对于rebar3,编译失败了,因为它说找不到包含文件“include/xx.hrl”

那么我认为您没有伞式项目,您只是在同一级别上有多个目录,每个目录都有自己的由rebar3管理的项目。 比如:

root_folder
 |- project1
 |  |- src
 |  |- include
 |  |  `- one.hrl
 |  `- rebar.config
 |- project2
 |  |- src
 |  |  `- two.erl
 |  |- include
 |  `- rebar.config
 …
您希望将
one.hrl
包含到
two.erl

如果是这样的话,你应该考虑其中的一个选项:

A.转向伞形项目结构,如

root_folder
 |- rebar.config <<<<<<<< notice this file is here now
 `- apps
    |- project1
    |  |- src
    |  `- include
    |     `- one.hrl
    |- project2
    |  |- src
    |  |  `- two.erl
    |  `- include
    …
(如果您设法以十六进制.pm格式发布project1)

C.正确设置
$ERL_LIBS
,使其包括使用rebar3构建应用程序的路径。类似于

ERL_LIBS=$ERL_LIBS:/path/to/root_folder/project1/_build/lib:/path/to/root_folder/project2/_build/lib:…

希望这有帮助:)

您是否尝试过使用
-include_lib
而不是
-include
?是的,我尝试过,但不起作用。。。
ERL_LIBS=$ERL_LIBS:/path/to/root_folder/project1/_build/lib:/path/to/root_folder/project2/_build/lib:…