vimerl自动编译

        vimerl配置好后,在文件每次保存时会自动进行语法检查。但是我发现,修改一个文件后,使用rebar进行编译,花费的时间比较长,主要是项目文件较多,编译遍历整个项目花了大量时间。我们可以做一些小的修改就可以在文件保存时自动生成 *.beam,由于只编译一个文件,所以速度很快.

      首先查看erlang_check.erl文件, 原有代码在不能生成*.beam文件的原因在于编译时使用了strong_validation标志,查阅erlang文档可知这个标志不会生成目标代码。在erlang_check.erl的main函数中增加一个目标路径参数, 修改后的代码如下
%%可以指定输出目录
main([File, OutDir]) ->
    Dir = filename:dirname(File),
          Defs = [
              warn_export_all,
            warn_export_vars,
            warn_shadow_vars,
            warn_obsolete_guard,
            warn_unused_import,
            report,
            report,
            {i, Dir ++ "/include"},
            {i, Dir ++ "/../include"},
            {i, Dir ++ "/../../include"},
            {outdir, OutDir}],
        compile:file(File, Defs),   %再次编译,这次会生成目标代码
     Result;

现在还需要将目标路径传入,在vim配置文件中加入一行
"根据项目来设置erlang输出目录
if  getcwd() == "e:\\server_src" 
    let = my_erlang_out_dir = getcwd() . "/ebin"
endif

在erlang.vim文件中,加入下面代码,这样非定义项目中的erlang文件将输出到当前目录:
if !exists("my_erlang_out_dir")
    let my_erlang_out_dir = getcwd()
endif

还需要将目标路径传入erlang_check.erl,修改erlang.vim中的makeprg参数,在后面加上路径参数
execute "setlocal makeprg=escript.exe\\ " . s:erlang_check_file . "\\ \%\\ ". g:my_erlang_out_dir

PS:如果项目采用rebar来编译,就不需要这么麻烦了,只需要简单的两步:
1.去掉strong_validation标志,
2.在rebar.config文件中增加{out_dir, Dir}选



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值