5

ログユーティリティとしてラガーを使用したいので、以下のようにプロジェクトを編成しました。

proj\
  |
  |--lager\
  |    |--src\
  |    |--ebin\
  |    |--...
  |     
  |--logserver\
  |    |--src\
  |    |--ebin\
  |    |--rebar.config
  |    |--...
  |
  |--rebar
  |

ただし、logserver をコンパイルしようとすると、常に次のエラーが発生しました。

D:\proj\logserver>..\rebar コンパイル

==> logserver (compile)
src/logserver_app.erl:none: error in parse transform 'lager_transform': {undef,
                                             [{lager_transform,
                                               parse_transform,
                                               [[{attribute,1,file,
                                                  {"src/logserver_app.erl",1}},  
                                                  ...

誰でも理由を知ることができますか?ありがとう!

これらはいくつかの追加情報です:

  • 私はWindows OSを使用しており、最新バージョンのErlangとrebarとlagerを使用しています。
  • ラガー自体はすでにコンパイルされています。D:\proj\logserver>dir ..\lager\ebin\lager_transform.beam を見つけることができます (これは成功します)
  • 鉄筋の構成ファイル (D:\proj\logserver\rebar.config):

    ... {erl_opts, [{parse_transform, lager_transform}, debug_info,{d,'TEST'}, {i, "include"}, {src_dirs, ["src"]}]}.

    {lib_dirs, ["..\lager\ebin"]}. ...

4

2 に答える 2

6

dep に既に lager がある場合は、lager の依存関係を最初に移動して、最初rebar.configにコンパイルされるようにしてください。そのようです:

{deps,[
  lager,
  ..
]}.
于 2013-07-05T08:38:23.930 に答える
4

の依存関係としてラガーを追加しましたrebar.configか? ラガーはパスにないと思います。

鉄筋ウィキから:

アプリケーションで lager を使用するには、それを rebar dep として定義するか、erlang のパスに含める他の方法が必要です。次に、次のオプションを erlang コンパイラ フラグに追加できます。

{parse_transform, lager_transform}

を編集して、依存関係として「lager」を追加できますrebar.config

%% == Dependencies ==

%% Where to put any downloaded dependencies. Default is "deps"
{deps_dir, "deps"}.

%% What dependencies we have, dependencies can be of 3 forms, an application
%% name as an atom, eg. mochiweb, a name and a version (from the .app file), or
%% an application name, a version and the SCM details on how to fetch it (SCM
%% type, location and revision). Rebar currently supports git, hg, bzr and svn.
{deps, [application_name,
        {application_name, "1.0.*"},
        {application_name, "1.0.*",
         {git, "git://github.com/basho/rebar.git", {branch, "master"}}}]}.

あなたの場合、それは次のようになります。

{deps, [{lager, ".*", {git, "git://github.com/basho/lager.git", "HEAD"}}]}.

rebar 依存関係マネージャーの詳細については、次を参照してください。

https://github.com/basho/rebar/wiki/Dependency-management

于 2012-09-10T10:32:34.707 に答える