Erlang:向应用程序添加库

时间:2011-06-11 10:04:17

标签: erlang

我使用 erlIDE (基于Eclipse)来处理Erlang项目。直到今天一切都很好,但今天我必须在我的应用程序中使用外部库(couchbeam)。我发现了,到底是什么,顺便说一下。)

问题很简单 - 我不能将外部库包含在编译器路径中。我用rebar来获取couchbeam的依赖关系,它还下载了ibrowse,mochiweb和ejson。

如何在不修改ERL_LIBS以在erlIDE中处理项目的情况下将这些库包含到编译器路径中?

我不想修改ERL_LIBS,因为我可以更改项目的路径,启动新路径(然后我应该再次修改ERL_LIBS)等等。

我在erlIDE中尝试过编译器选项:

{pa, {pa, 'site_stater/deps/couchbeam/'}}

{pa, {pa, '../deps/couchbeam/'}}

其中'site_stater' - 是项目名称

我想知道专业的erlang程序员如何组织他们的项目工作流程(他们编写erlang progs,如何调试它,处理外部库等等)。

非常感谢你的出席。

更新 我编写了简单的函数来加载库,但我认为处理这个问题仍然是错误的方法:

load_libraries() ->
    ProjectRoot = filename:join([filename:absname("./"), "site_stater"]),
    {ok, DepsList} = file:list_dir(ProjectRoot ++ "/deps/"),
    lists:foreach(fun (Folder) ->
                       RealFolder = ProjectRoot ++ "/deps/" ++ Folder,
                       case filelib:is_dir(RealFolder) of
                           true ->
                               code:add_patha(filename:join([RealFolder, "/ebin"]));
                           false -> ok
                       end
                  end,
                DepsList),
    ok.

1 个答案:

答案 0 :(得分:2)

我现在无法验证它,但您应该能够在编译器选项中使用{pa, '../deps/couchbeam/'}。如果这不起作用,请尝试使用绝对路径。

编译器设置还没有完成,我们计划有一些更简单的方法来引用外部库,但我们还没有。来自用户的每一个这样的查询都增加了修复它的重要性!

的问候, 维拉德