1

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

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

all: compile start

compile:
    ./rebar compile

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

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

4

2 回答 2

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

我不确定这是否违反了最佳实践,但它应该可以工作。

于 2012-10-22T03:17:49.550 回答
0

将有用的东西放在共同的 Makefile 中可能会更好 https://github.com/virtan/erlang-makefile

于 2014-07-13T08:40:22.343 回答