在我的项目中,我想使用mysql,所以我结账https://github.com/dizzyd/erlang-mysql-driver。我想知道如何安装应用程序以便我的项目可以与之交互
答案 0 :(得分:4)
MyProject--/src /ebin /lib /include /priv /doc /examples /test /Emakefile
Emakefile
是一个重要文件。它可能没有文件扩展名。它使BIF:make:all()
能够编译您指向的所有erlang源模块,并将所有.beam文件传输到您想要的目的地。
例如:我是否希望编译src
中的所有模块并将梁文件传输到ebin
,我将其输入Emakefile
{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.
在这种情况下,我将启动erlang shell,其pwd()
指向文件夹MyProject
,以启用函数调用make:all()
以查找文件Emakfile
,以便编译我的所有src文件。
现在,假设您有另一个OTP应用程序,您希望将其作为构建中的额外包。如果它像我向你展示的那样安排了OTP,并且还没有构建,即尚未制作,我的意思是只有它的src,它的文件夹ebin是空的,或者ebin可能包含{{1 }} 已经。然后将此OTP应用程序复制到.APP file
文件夹中,以便您的应用程序如下所示:
MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile
然后我们会将lib
更改为:
{"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"}]}.
在文件夹Emakefile
中,您可以放置一个shell脚本来启动项目并将所有相关的ebin路径添加到您的节点代码路径中.sh脚本可能如下所示:
#!/bin/bash erl \ -name my_node@my_domain \ -pa ./ebin ./lib/*/ebin ./include \ -mnesia dump_log_write_threshold 10000 \ -eval "make:all()"
您可以将此文件另存为MyProject
。因此,当您对源代码进行更改时,即使在启动项目时,当您运行sh脚本并将终端路径指向文件夹start_project.sh
时,也可以执行以下操作:
$pwd /export/home/your_user_name/MyProject $sh start_project.sh
这将在您在脚本中输入的节点上启动您的项目,并将编译所有在关闭时更改的src文件。不仅如此,您还可以在shell中调用MyProject
,只要您对src代码进行更改即可。然后你会在调用后调用make:all()
,以便erlang vm重新加载已编译模块的新目标代码。
因此,您的整个项目现在将显示如下:
MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile /start_project.sh
因此,如果用这个“some_otp_app-1.0”替换erlang驱动程序的mysql应用程序,一切都会好的。成功!
答案 1 :(得分:3)
看一下“钢筋” - https://bitbucket.org/basho/rebar/wiki/Home
它可用于安装依赖项,以及用于创建独立版本。
快速浏览一下你想要使用的erlang-mysql-driver,表明它也在使用rebar进行依赖管理。