如何跨多个模块包含 .hrl 文件 rebar3
how to include .hrl files across multiple modules rebar3
我有几个模块的目录。对于每个模块,我将 include
(包含 *.hrl
文件)和 src
(包含 *.erl
文件)文件夹分开。如何在不复制文件的情况下将 *.hrl
文件从一个模块共享到另一个模块?
对于钢筋,我添加了 {erl_opts, [{i, "folderContainsIncludeFile"}]}
并且成功了。
但是对于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
中。
如果是这种情况,您应该考虑以下替代方案之一:
一个。转向伞式项目结构,例如...
root_folder
|- rebar.config <<<<<<<< notice this file is here now
`- apps
|- project1
| |- src
| `- include
| `- one.hrl
|- project2
| |- src
| | `- two.erl
| `- include
…
乙。为每个项目使用单独的 repos,并将它们配置为相互依赖。该结构与您当前的结构类似,但现在您必须将 deps
添加到 rebar.config。例如,在我们的示例中,您应该将以下行添加到项目 2 的 rebar.config:
{deps, [project1]}.
(如果您设法在 hex.pm 中发布项目 1)
C。正确设置 $ERL_LIBS
,使其包含使用 rebar3 构建应用程序的路径。像……
ERL_LIBS=$ERL_LIBS:/path/to/root_folder/project1/_build/lib:/path/to/root_folder/project2/_build/lib:…
希望这对您有所帮助:)
我有几个模块的目录。对于每个模块,我将 include
(包含 *.hrl
文件)和 src
(包含 *.erl
文件)文件夹分开。如何在不复制文件的情况下将 *.hrl
文件从一个模块共享到另一个模块?
对于钢筋,我添加了 {erl_opts, [{i, "folderContainsIncludeFile"}]}
并且成功了。
但是对于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
中。
如果是这种情况,您应该考虑以下替代方案之一:
一个。转向伞式项目结构,例如...
root_folder
|- rebar.config <<<<<<<< notice this file is here now
`- apps
|- project1
| |- src
| `- include
| `- one.hrl
|- project2
| |- src
| | `- two.erl
| `- include
…
乙。为每个项目使用单独的 repos,并将它们配置为相互依赖。该结构与您当前的结构类似,但现在您必须将 deps
添加到 rebar.config。例如,在我们的示例中,您应该将以下行添加到项目 2 的 rebar.config:
{deps, [project1]}.
(如果您设法在 hex.pm 中发布项目 1)
C。正确设置 $ERL_LIBS
,使其包含使用 rebar3 构建应用程序的路径。像……
ERL_LIBS=$ERL_LIBS:/path/to/root_folder/project1/_build/lib:/path/to/root_folder/project2/_build/lib:…
希望这对您有所帮助:)