Erlang 在使用lager-log框架时,始终存在lager_变换的未定义错误

Erlang 在使用lager-log框架时,始终存在lager_变换的未定义错误,erlang,rebar,Erlang,Rebar,我想使用lager作为我的日志工具,我的项目组织如下: proj\ | |--lager\ | |--src\ | |--ebin\ | |--... | |--logserver\ | |--src\ | |--ebin\ | |--rebar.config | |--... | |--rebar | 但是,当我尝试编译logserver时,总是出现以下错误: D:\proj\logs

我想使用lager作为我的日志工具,我的项目组织如下:

proj\
  |
  |--lager\
  |    |--src\
  |    |--ebin\
  |    |--...
  |     
  |--logserver\
  |    |--src\
  |    |--ebin\
  |    |--rebar.config
  |    |--...
  |
  |--rebar
  |
但是,当我尝试编译logserver时,总是出现以下错误:

D:\proj\logserver>。\r\n编译

==> 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\u 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”]}。

您是否在
rebar.config
中添加了啤酒作为依赖项?我想喝啤酒是行不通的

从:

要在应用程序中使用lager,您需要将其定义为钢筋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"}}]}.
有关钢筋依赖关系管理器的详细信息,请参见此处:


如果您的deps中已经有了lager,那么请确保首先在
rebar.config
中移动lager依赖项,这样它将首先编译。像这样:

{deps[
啤酒,
..
]}.

谢谢。但是我的啤酒在我的本地目录里。那么,我如何将其添加为依赖项呢?刚刚添加了lager的钢筋配置。我也遇到了类似的问题。我试过上述建议,但没有成功。看到这一点:我对rebar3完全不懂,但对我来说模糊的部分是根据rebar3捕捉“erlang编译器标志”的位置。结果是我不得不在rebar.config中更改一行,从这个
{erl\u opts,[debug\u info]}.
到这个
{erl\u opts,[debug\u info,{parse\u transform,lager\u transform}.