2017-11-10 11 views
1

私はいくつかのモジュールのディレクトリを持っています。各モジュールについて、私はinclude*.hrlファイルを含む)とsrc*.erlファイルを含む)のフォルダを分けています。どのように私は*.hrlモジュールを別のモジュールに複製しないで共有することができますか?複数のモジュールに.hrlファイルを含める方法rebar3

鉄筋では、私は{erl_opts, [{i, "folderContainsIncludeFile"}]}を追加しました。

しかしrebar3で、コンパイルがインクルードファイルを見つけることができないと言って失敗した「/ xx.hrlを含める」

+2

あなたが '' -include' -include_lib'の代わりに使用してみましたができますか! –

+0

はい、私は試しましたが、動作していません... – user2912344

答えて

1

私は、あなたは傘のプロジェクトを持っていない、あなただけで複数のディレクトリを持ってそれを取ります同じレベルで、それぞれ独自のプロジェクトがrebar3で管理されています。 のような何か:

root_folder 
|- project1 
| |- src 
| |- include 
| | `- one.hrl 
| `- rebar.config 
|- project2 
| |- src 
| | `- two.erl 
| |- include 
| `- rebar.config 
… 

そして、あなたはtwo.erlone.hrlを含めたいです。

そのような場合は、これらの選択肢の一つ考慮すべきである:傘のプロジェクト構造への移行

A.を、のような...

root_folder 
|- rebar.config <<<<<<<< notice this file is here now 
`- apps 
    |- project1 
    | |- src 
    | `- include 
    |  `- one.hrl 
    |- project2 
    | |- src 
    | | `- two.erl 
    | `- include 
    … 

B.プロジェクトごとに個別のリポジトリを使用して、それらを設定しますお互いからの依存として。構造は現在のものと似ていますが、今度はrebar.configにdepsを追加する必要があります。たとえば、私たちの例では、あなたがのProject2のrebar.configに以下の行を追加する必要があります

{deps, [project1]}. 

(あなたがhex.pmでのProject1を公開するために管理している場合)

それようにC.が正しく$ERL_LIBSを設定あなたのアプリケーションがrebar3で構築されているパスが含まれています。以下のような何か...

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

希望これは:)

関連する問題