Erlang 用make编译LFE文件

Erlang 用make编译LFE文件,erlang,makefile,lfe,Erlang,Makefile,Lfe,在OTP项目中,是否有一种从make规则编译.lfe源文件的标准方法 根据文档,我应该使用lfe\u comp:file/1,如果我想在OTP应用程序中编译多个这样的文件,这没有多大帮助(我应该在src中保存源文件,但在ebin中保存二进制文件) 理想情况下,我可以做一些类似的事情 erlc -Wf -o ebin src/*lfe 但是在erlc中似乎没有lfe支持。我能想到的最好的解决办法是 find src/*lfe -exec erl -s lfe_comp file {} -s in

在OTP项目中,是否有一种从
make
规则编译
.lfe
源文件的标准方法

根据文档,我应该使用
lfe\u comp:file/1
,如果我想在OTP应用程序中编译多个这样的文件,这没有多大帮助(我应该在
src
中保存源文件,但在
ebin
中保存二进制文件)

理想情况下,我可以做一些类似的事情

erlc -Wf -o ebin src/*lfe
但是在
erlc
中似乎没有
lfe
支持。我能想到的最好的解决办法是

find src/*lfe -exec erl -s lfe_comp file {} -s init stop \;
mv src/*beam ebin/

但这似乎不雅。有更好的主意吗?

没有。OTP不支持LFE,因此
erlc
不知道
.LFE
文件。据我所知,没有办法“打开”erlc并动态添加如何处理文件的信息。另一种方法是为此编写
lfec
脚本。我会考虑的


作为一个有趣的问题,使用LFE做什么?

根据rvirding的建议,这里是第一次尝试
lfec
,它实现了我上面想要的功能(几乎没有其他功能)。我将使用
/lfec-o ebin src/*lfe
Makefile
调用它

#!/usr/bin/env escript
%% -*- erlang -*-
%%! -smp enable -sname lfec -mnesia debug verbose
main(Arguments) ->
    try
        {Opts, Args} = parse_opts(Arguments),
        case get_opt("-o", Opts) of
            false ->
               lists:map(fun lfe_comp:file/1, Args);
            Path ->
               lists:map(fun (Arg) -> lfe_comp:file(Arg, [{outdir, Path}]) end,
                         Args)
        end
    catch
        _:_ -> usage()
    end;
main(_) -> usage().

get_opt(Target, Opts) -> 
    case lists:keyfind(Target, 1, Opts) of
        false -> false;
        {_} -> true;
        {_, Setting} -> Setting
    end.

parse_opts(Args) -> parse_opts(Args, []).
parse_opts(["-o", TargetDir | Rest], Opts) ->
    parse_opts(Rest, [{"-o", TargetDir} | Opts]);
parse_opts(Args, Opts) -> {Opts, Args}.

usage() ->
    io:format("usage:\n"),
    io:format("-o [TargetDir] -- output files to specified directory\n"),
    halt(1).

我已经发布了第一次尝试。我现在主要是为了好玩而使用LFE。当然没有什么我不能做的香草Erlang。它看起来很有趣,而且我偏爱Lisp,所以我正在尝试在其中编写一些简单的组件,以获得舒适感。@Inaimathi好的,有一个Google小组有一些流量,不多。github上的develop分支有一些新的东西还没有进入主分支。@rvirding-请随意使用;这就是它的用途。我借用了它,并向开发分支添加了一个简单的lfec。正如Joe曾经说过的“Robert不能对任何事情做微小的改变”,这是真的,所以我重写了它。现在我只需要找出哪些选项在LFE环境中有用。