在一个动态口令项目中,有没有一种从make规则编译.lfe源文件的标准方法?
根据文档,我应该使用lfe_comp:file/1,如果我想在一个动态口令应用程序中编译多个这样的文件(我应该在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/但这似乎并不优雅。有更好的主意吗?
发布于 2012-07-02 13:12:41
根据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).发布于 2012-07-02 09:23:30
不怎么有意思。动态口令不支持LFE,因此erlc不知道.lfe文件。据我所知,没有办法“打开”erlc并动态添加如何处理文件的信息。另一种方法是为此编写一个lfec脚本。我会考虑的。
有趣的是,使用LFE的目的是什么?
https://stackoverflow.com/questions/11278857
复制相似问题