使用较大的日志框架时,始终得到lager_transform的undef错误

时间:2012-09-08 07:30:58

标签: erlang rebar

我想使用lager作为我的日志实用程序,并且我已按照以下方式对我的项目进行了组织:

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

但是,当我尝试编译logserver时,我总是遇到以下错误:

D:\ proj \ logserver> .. \ rebar compile

==> 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操作系统并使用最新版本的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”]}。   ...

2 个答案:

答案 0 :(得分:5)

如果你已经在你的deps中使用了lager,那么请确保先在rebar.config中移动较大的依赖项,这样它将首先编译..

答案 1 :(得分:3)

您是否在您的rebar.config中添加 lager 作为依赖项?我猜 lager 不在路径中。

来自rebar wiki

  

要在应用程序中使用lager,您需要将其定义为rebar dep   或者有其他方式将它包含在erlang的路径中。那你可以   将以下选项添加到erlang编译器标志:

{parse_transform, lager_transform}

您可以通过修改rebar.config

来添加“lager”作为依赖项
%% == 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"}}]}.

更多关于钢筋依赖管理器的信息:

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