我使用 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.
答案 0 :(得分:2)
我现在无法验证它,但您应该能够在编译器选项中使用{pa, '../deps/couchbeam/'}
。如果这不起作用,请尝试使用绝对路径。
编译器设置还没有完成,我们计划有一些更简单的方法来引用外部库,但我们还没有。来自用户的每一个这样的查询都增加了修复它的重要性!
的问候, 维拉德