从makefile启动erlang otp应用程序

时间:2012-10-21 21:18:08

标签: erlang

我已经创建了一个erlang应用程序,我可以使用application:start(Name)来成功启动应用程序。

我尝试创建一个makefile步骤,使用rebar进行编译,然后手动启动应用程序。但它似乎没有用。这就是我现在所拥有的:

all: compile start

compile:
    ./rebar compile

start:
    erl -s application load shoutcast -s application start shoutcast

所有这一切都会加载一个交互式的erlang shell

2 个答案:

答案 0 :(得分:2)

Aplication:start(Name)

来电

Name:start/2 

而-s标志调用

Name:start() or Name:start([arg1, arg2, ...]).

所以,我认为你不能以这种方式成功调用Application。假设您不想创建发布和启动文件,您可以(我认为)向您的应用程序模块添加一个方法,start / 0

-module(shoutcast).

-behaviour(application).

%% Application callbacks
-export([start/2, stop/1]).

%% Allow for erl -s invocation 
-export([start/0]).

 ... Snip ...

start() ->
    application:start(shoutcast).

... Snip ...

然后在你的makefile中

erl -s shoutcast

我不确定这是否违反了最佳做法,但它应该有效。

答案 1 :(得分:0)

将有用的东西保存在普通的Makefile中会更好 https://github.com/virtan/erlang-makefile