我想编写一个独立的Erlang应用程序,它可以像任何其他程序一样运行(通过单击.exe可执行文件)。就像Wings3D那样。
我该怎么办?什么是使它成为可能的最佳方法?我在Windows平台上,如果它很重要。
第二次更新:
好吧,我还没有导出promodb:start/0
函数,这就是Erlang无法启动的原因(并且正如Muzaaya Joshua所说,werl -s
不起作用)。但现在,我有另一个奇怪的问题。在我的rebar.config
我有2个依赖项:
{deps, [
{cowboy, ".*", {git, "https://github.com/extend/cowboy.git"}},
{erlydtl, ".*", {git, "https://github.com/evanmiller/erlydtl.git"}}
]
}.
在我使用
启动Erlang之后erl -pa ebin deps/cowboy/ebin deps/erlydtl/ebin deps/proper/ebin -s promodb
我通过应用程序找到:which_application()只启动了Cowboy:
[{cowboy,"Small, fast, modular HTTP server.","0.4.0"},
{stdlib,"ERTS CXC 138 10","1.18"},
{kernel,"ERTS CXC 138 10","2.15"}]
据我所知,Erlang应该启动我放在promodb.app
文件中的所有必需应用程序,如:
{application, promodb,
[
{description, ""},
{vsn, "0.1"},
{registered, [promodb_sup]},
{applications, [
kernel,
stdlib,
cowboy,
erlydtl
]},
{mod, { promodb, []}},
{env, []}
]}.
我做错了什么?
答案 0 :(得分:3)
我使用rebar escriptize
来打包像rebar这样的独立包。然后你可以在linux中使用./PackageName
或在windows中使用escript.exe PackageName
。
答案 1 :(得分:2)
我认为您需要按照documentation中的说明创建发布包和启动脚本。
答案 2 :(得分:1)
实际上-s
选项无处不在。只需使用erl
NOT 即可。 werl
werl
命令尝试在Windows上加载GUI。
BitRock Install Builder是您需要查看的绝佳工具。用Erlang编写的Yaws Web Server,使用它和许多其他应用程序。
答案 3 :(得分:1)
Erlydtl没有应用程序行为,它就像一个库。正如您在erlydtl示例中所看到的,不需要启动应用程序。
https://github.com/evanmiller/erlydtl#template-compilation
检查一下:
erl -pa ebin deps / * / ebin
1> erlydtl:compile(<<<" {{foo}}">>,my_module_name)。
有效吗?
我喜欢escriptize rebar选项来创建可执行文件。