如何在Erlang中安装应用程序?
在我的项目中,我想使用mysql,所以我签出了这个。我想知道如何安装该应用程序,以便我的项目可以与之交互 它可用于安装依赖项和创建独立版本如何在Erlang中安装应用程序?,erlang,Erlang,在我的项目中,我想使用mysql,所以我签出了这个。我想知道如何安装该应用程序,以便我的项目可以与之交互 它可用于安装依赖项和创建独立版本 快速查看您想要使用的erlang mysql驱动程序,可以发现它也在使用rebar进行依赖关系管理。如果您已经开始部署应用程序(已经完成了一些编码),或者如果您是新手,或者如果您的项目是erlang/OTP应用程序,然后,我建议您首先按照推荐的文件系统组织代码,如下所示: MyProject--/src /ebin
快速查看您想要使用的erlang mysql驱动程序,可以发现它也在使用rebar进行依赖关系管理。如果您已经开始部署应用程序(已经完成了一些编码),或者如果您是新手,或者如果您的项目是erlang/OTP应用程序,然后,我建议您首先按照推荐的文件系统组织代码,如下所示: MyProject--/src /ebin /lib /include /priv /doc /examples /test /Emakefile MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile {"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}. {"lib/some_otp_app-1.0/src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "lib/some_otp_app-1.0/ebin"}]}. #!/bin/bash erl \ -name my_node@my_domain \ -pa ./ebin ./lib/*/ebin ./include \ -mnesia dump_log_write_threshold 10000 \ -eval "make:all()" MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile /start_project.sh 在这种情况下,我将启动erlang shell,使其
pwd()
指向文件夹MyProject
,以启用函数调用make:all()
来查找文件Emakfile
,从而编译我的所有src文件
现在,假设您有另一个OTP应用程序,您希望将其作为构建中的额外包。如果它像我向您展示的那样进行OTP安排,但尚未构建,即尚未制作,我的意思是,只有它的src和文件夹ebin为空,或者它的ebin可能已经包含.APP文件
。然后将此OTP应用程序复制到lib
文件夹中,使您的应用程序如下所示:
MyProject--/src
/ebin
/lib
/include
/priv
/doc
/examples
/test
/Emakefile
MyProject--/src
/ebin
/lib/some_otp_app-1.0
/include
/priv
/doc
/examples
/test
/Emakefile
{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.
{"lib/some_otp_app-1.0/src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "lib/some_otp_app-1.0/ebin"}]}.
#!/bin/bash
erl \
-name my_node@my_domain \
-pa ./ebin ./lib/*/ebin ./include \
-mnesia dump_log_write_threshold 10000 \
-eval "make:all()"
MyProject--/src
/ebin
/lib/some_otp_app-1.0
/include
/priv
/doc
/examples
/test
/Emakefile
/start_project.sh
在文件夹MyProject
中,您可以放置一个shell脚本,该脚本将启动您的项目,并将所有相关的ebin路径添加到节点代码路径中。sh脚本可能如下所示:
MyProject--/src
/ebin
/lib
/include
/priv
/doc
/examples
/test
/Emakefile
MyProject--/src
/ebin
/lib/some_otp_app-1.0
/include
/priv
/doc
/examples
/test
/Emakefile
{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.
{"lib/some_otp_app-1.0/src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "lib/some_otp_app-1.0/ebin"}]}.
#!/bin/bash
erl \
-name my_node@my_domain \
-pa ./ebin ./lib/*/ebin ./include \
-mnesia dump_log_write_threshold 10000 \
-eval "make:all()"
MyProject--/src
/ebin
/lib/some_otp_app-1.0
/include
/priv
/doc
/examples
/test
/Emakefile
/start_project.sh
这将在脚本中输入的节点上启动项目,并编译关闭时更改的所有src文件。不仅如此,每当对src代码进行标记时,您还可以在shell中调用:make:all()
。然后,在生成后调用:l(some_module)
,以便erlang vm重新加载已编译模块的新目标代码。
因此,您的整个项目现在将如下所示:
MyProject--/src
/ebin
/lib
/include
/priv
/doc
/examples
/test
/Emakefile
MyProject--/src
/ebin
/lib/some_otp_app-1.0
/include
/priv
/doc
/examples
/test
/Emakefile
{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.
{"lib/some_otp_app-1.0/src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "lib/some_otp_app-1.0/ebin"}]}.
#!/bin/bash
erl \
-name my_node@my_domain \
-pa ./ebin ./lib/*/ebin ./include \
-mnesia dump_log_write_threshold 10000 \
-eval "make:all()"
MyProject--/src
/ebin
/lib/some_otp_app-1.0
/include
/priv
/doc
/examples
/test
/Emakefile
/start_project.sh
MyProject--/src
/息税前利润
/lib/some_otp_app-1.0
/包括
/普里夫
/医生
/例子
/试验
/电子档案
/start_project.sh
因此,如果您用这个“some_otp_app-1.0”替换mysql应用程序的erlang驱动程序,一切都会很好。成功