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

use*_*933 4 erlang rebar

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

proj\
  |
  |--lager\
  |    |--src\
  |    |--ebin\
  |    |--...
  |     
  |--logserver\
  |    |--src\
  |    |--ebin\
  |    |--rebar.config
  |    |--...
  |
  |--rebar
  |
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译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}},  
                                                  ...
Run Code Online (Sandbox Code Playgroud)

有人知道原因吗?谢谢!

这些是一些额外的信息:

  • 我正在使用Windows操作系统并使用最新版本的Erlang和rebar和lager.
  • lager本身已经编译好了.我们可以找到D:\ proj\logserver> dir ..\lager\ebin\lager_transform.beam(这会成功)
  • rebar的配置文件(D:\ proj\logserver\rebar.config):

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

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

Jac*_*l's 6

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


Rob*_*loi 4

您是否在您的 中添加了啤酒作为依赖项rebar.config?我猜啤酒不在路上。

\n\n

来自钢筋维基

\n\n
\n

要在应用程序中使用 lager,您需要将其定义为 rebar dep\n 或使用其他方式将其包含在 erlang\xe2\x80\x99s 路径中。然后您可以将以下选项添加到 erlang 编译器标志中:

\n\n
{parse_transform, lager_transform}\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

您可以通过编辑以下内容来添加 \'lager\' 作为依赖项rebar.config

\n\n
%% == Dependencies ==\n\n%% Where to put any downloaded dependencies. Default is "deps"\n{deps_dir, "deps"}.\n\n%% What dependencies we have, dependencies can be of 3 forms, an application\n%% name as an atom, eg. mochiweb, a name and a version (from the .app file), or\n%% an application name, a version and the SCM details on how to fetch it (SCM\n%% type, location and revision). Rebar currently supports git, hg, bzr and svn.\n{deps, [application_name,\n        {application_name, "1.0.*"},\n        {application_name, "1.0.*",\n         {git, "git://github.com/basho/rebar.git", {branch, "master"}}}]}.\n
Run Code Online (Sandbox Code Playgroud)\n\n

在你的情况下,应该是这样的:

\n\n
{deps, [{lager, ".*", {git, "git://github.com/basho/lager.git", "HEAD"}}]}.\n
Run Code Online (Sandbox Code Playgroud)\n\n

有关 rebar 依赖管理器的更多信息,请参见此处:

\n\n

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

\n