5

我想使用 lager 作为我的日志实用程序,并且我将我的项目组织如下:

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

4

2 回答 2

6

如果您的部门中已经有较大的依赖项,请确保首先移动较大的依赖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"}}]}.

有关钢筋依赖项管理器的更多信息,请点击此处:

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

于 2012-09-10T10:32:34.707 回答