2017-11-10 14 views
1

여러 모듈의 디렉토리가 있습니다. 각 모듈에는 include (*.hrl 개 파일 포함) 및 src (*.erl 개 파일 포함) 폴더가 있습니다. 중복되지 않고 모듈의 파일 *.hrl을 다른 모듈에 어떻게 공유합니까?여러 모듈에 .hrl 파일을 포함하는 방법 rebar3

철근을 사용하여 {erl_opts, [{i, "folderContainsIncludeFile"}]}을 추가하면 효과가있었습니다.

그러나 rebar3와

는, 컴파일은 그때 당신은 우산 프로젝트가없는 가져

+2

당신이'-include''-include_lib' 대신 사용하여 시도 적이 데 도움이? –

+0

예, 시도했지만 작동하지 않습니다 ... – user2912344

답변

1

"/ xx.hrl 포함"파일을 포함 찾을 수 없다는 의해 실패, 당신은 단지 여러 디렉토리가 같은 레벨, 각 프로젝트는 rebar3로 관리됩니다.

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

그리고 당신은 two.erlone.hrl을 포함 할 : 뭔가있다.

그런 경우가 있다면, 당신은 이러한 대안 중 하나 고려해야합니다

A. 우산 프로젝트 구조 등으로 이동을 ... 각 프로젝트에 대한 개별 REPOS를 사용하고이를 구성

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

B. 서로로부터의 의존성으로서. 구조는 현재 가지고있는 것과 비슷하지만, 이제 deps을 rebar.config에 추가해야합니다. 예를 들어, 우리의 예를 들어, 당신은 프로젝트 2의 rebar.config에 다음 줄을 추가해야합니다

{deps, [project1]}. 

C. 제대로 그래서 그 $ERL_LIBS 설정 (당신은 hex.pm에서 프로젝트 1을 게시 관리하는 경우) rebar3로 앱이 빌드 된 경로가 포함됩니다. 뭔가 같은 ...

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

희망이 :)