【问题标题】:Compiling LFE files with make使用 make 编译 LFE 文件
【发布时间】:2012-07-01 01:04:27
【问题描述】:

在 OTP 项目中,有没有一种标准方法可以根据 make 规则编译 .lfe 源文件?

根据文档,我应该使用lfe_comp:file/1,如果我想在 OTP 应用程序中编译多个此类文件(我应该将源文件保存在 @987654324 @,但 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/

但这似乎不优雅。有更好的想法吗?

【问题讨论】:

    标签: erlang makefile lfe


    【解决方案1】:

    根据 rvirding 的建议,这是lfec 的第一次尝试,它可以满足我上面的要求(几乎没有别的)。我会从Makefile./lfec -o ebin src/*lfe 调用它。

    #!/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).
    

    【讨论】:

    • @rvirding - 随意;这就是它的目的。
    • 我已经借用它并在开发分支中添加了一个简单的lfec。正如乔曾经“罗伯特无法对任何事情做出小的改变”,这是真的,所以我重写了它。现在我只需要弄清楚哪些选项在 LFE 上下文中有用。
    【解决方案2】:

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

    LFE 用于什么目的?

    【讨论】:

    • 我已经发布了第一次尝试。目前我主要使用 LFE 来娱乐。当然,没有什么我不能用香草 Erlang 做的。它只是看起来很有趣,而且我偏爱 Lisp,所以我正在尝试在其中编写一些简单的组件以适应它。
    • @Inaimathi 好的,有一个谷歌群组groups.google.com/group/lisp-flavoured-erlang 有一些流量,不多。 github上的develop分支有一些新东西还没有进入master分支。
    猜你喜欢
    • 2011-02-05
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多