首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用make编译LFE文件

使用make编译LFE文件
EN

Stack Overflow用户
提问于 2012-07-01 09:04:28
回答 2查看 257关注 0票数 2

在一个动态口令项目中,有没有一种从make规则编译.lfe源文件的标准方法?

根据文档,我应该使用lfe_comp:file/1,如果我想在一个动态口令应用程序中编译多个这样的文件(我应该在src中保存源文件,但在ebin中保存二进制文件),这没有太大帮助。

理想情况下,我可以这样做

代码语言:javascript
复制
erlc -Wf -o ebin src/*lfe

但是在erlc中似乎不支持lfe。我能想到的最好的解决方案是

代码语言:javascript
复制
find src/*lfe -exec erl -s lfe_comp file {} -s init stop \;
mv src/*beam ebin/

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-02 13:12:41

根据rvirding的建议,这里是对lfec的第一次尝试,它做了我上面想要做的事情(几乎没有其他事情)。我会用./lfec -o ebin src/*lfeMakefile调用它。

代码语言:javascript
复制
#!/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).
票数 4
EN

Stack Overflow用户

发布于 2012-07-02 09:23:30

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

有趣的是,使用LFE的目的是什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11278857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档