gpt4 book ai didi

erlang - 使用 make 编译 LFE 文件

转载 作者:行者123 更新时间:2023-12-02 22:37:17 33 4
gpt4 key购买 nike

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

根据文档,我应该使用 lfe_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/

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

最佳答案

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

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

关于erlang - 使用 make 编译 LFE 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11278857/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com