Erlang如何定位模块
我不确定或者不知道erlang查找不在默认目录中的模块的传统方式。我知道它会在编译后的文件夹和erlang的系统文件夹中查找,或者在-list:foreach(fun(E)->io:fwrite(“Path:~s~n,[E])end,code:get_Path()将生成的文件夹中查找Erlang如何定位模块,erlang,Erlang,我不确定或者不知道erlang查找不在默认目录中的模块的传统方式。我知道它会在编译后的文件夹和erlang的系统文件夹中查找,或者在-list:foreach(fun(E)->io:fwrite(“Path:~s~n,[E])end,code:get_Path()将生成的文件夹中查找 Path: . Path: /usr/lib64/erlang/lib/kernel-2.16.3/ebin Path: /usr/lib64/erlang/lib/stdlib-1.19.3/ebin Path:
Path: .
Path: /usr/lib64/erlang/lib/kernel-2.16.3/ebin
Path: /usr/lib64/erlang/lib/stdlib-1.19.3/ebin
Path: /usr/lib64/erlang/lib/xmerl-1.3.4/ebin
Path: /usr/lib64/erlang/lib/tv-2.1.4.10/ebin
Path: /usr/lib64/erlang/lib/tools-2.6.12/ebin
Path: /usr/lib64/erlang/lib/syntax_tools-1.6.11/ebin
Path: /usr/lib64/erlang/lib/sasl-2.3.3/ebin
Path: /usr/lib64/erlang/lib/odbc-2.10.17/ebin
Path: /usr/lib64/erlang/lib/observer-1.3.1.1/ebin
Path: /usr/lib64/erlang/lib/hipe-3.10.2.1/ebin
Path: /usr/lib64/erlang/lib/eunit-2.2.5/ebin
Path: /usr/lib64/erlang/lib/erts-5.10.3/ebin
Path: /usr/lib64/erlang/lib/edoc-0.7.12.1/ebin
Path: /usr/lib64/erlang/lib/dialyzer-2.6.1/ebin
Path: /usr/lib64/erlang/lib/debugger-3.2.12/ebin
Path: /usr/lib64/erlang/lib/compiler-4.9.3/ebin
但是,将其他文件夹添加到默认路径的常规方法是什么,或者如何通知模块它必须在其他位置查找未包含在默认路径中的模块?签出
code:add_path(Directory)
将目录附加到模块加载路径。有关添加代码路径的其他相关函数,请参见
您还可以通过导出带有冒号分隔的目录列表的
ERL_LIBS
环境变量来告诉Erlang在哪里可以找到模块。每个目录应指向具有ebin目录的OTP项目,其中包含编译的.beam
文件。您可以在系统中设置以查找其他库文件 我按照上面的链接做了一些额外的阅读,我想我找到了erlang如何为大多数项目定位模块。谢谢大家的贡献
G4143那么,这是允许将其他文件夹中的模块功能放入模块的常规方式吗?我想我不知道哪种方式是首选的erlang方式来公开默认文件夹之外的文件夹中的功能。您是如何编译应用程序的?只要编译的二进制文件最终位于项目的ebin目录中,您就可以按照自己的意愿组织代码。