VSCode配置Erlang开发环境
文章目录
一、下载安装Erlang
这里以最新的 OTP 23.0 Windows 64-bit Binary File为例,下载后安装到C:\Program Files\erl-23.0,在PATH中添加路径:C:\Program Files\erl-23.0\bin
二、安装VSCode Erlang插件
三、安装rebar3
在https://www.rebar3.org/下载最新的 rebar3,放在Erlang的可执行文件目录中(C:\Program Files\erl-23.0\bin),然后在此目录添加一个rebar3.bat,内容如下:
1@echo off
2escript.exe "%~dpn0" %*
四、测试开发环境
由于VSCode的Erlang插件默认是使用rebar3编译生成的目录结构来进行调试的,所以需要使用rebar3来进行编译。也强烈建议使用rebar3来创建工程。
1. 创建工程
在VSCode终端使用rebar3创建一个hello工程
1rebar3 new app hello
2. 配置生成任务
在“终端”菜单中执行“配置默认生成任务”,选择使用模板创建tasks.json,再选择Others。
此时生成的tasks.json文件:
1{
2 // See https://go.microsoft.com/fwlink/?LinkId=733558
3 // for the documentation about the tasks.json format
4 "version": "2.0.0",
5 "tasks": [
6 {
7 "label": "echo",
8 "type": "shell",
9 "command": "echo Hello"
10 }
11 ]
12}
将之改为:
1{
2 // See https://go.microsoft.com/fwlink/?LinkId=733558
3 // for the documentation about the tasks.json format
4 "version": "2.0.0",
5 "tasks": [
6 {
7 "label": "rebar3 compile",
8 "type": "shell",
9 "command": "cd hello && rebar3 compile"
10 }
11 ]
12}
由于VSCode的工作区为hello的上层目录work,所以如果要编译hello需要进入到hello目录再编译。 此时再在“终端”菜单中执行“配置默认生成任务”,会出现我们刚才配置的任务rebar3 compile,执行它。
并在problemMatcher中设置为"$erlang":
1{
2 // See https://go.microsoft.com/fwlink/?LinkId=733558
3 // for the documentation about the tasks.json format
4 "version": "2.0.0",
5 "tasks": [
6 {
7 "label": "rebar3 compile",
8 "type": "shell",
9 "command": "cd hello && rebar3 compile",
10 "problemMatcher": [
11 "$erlang"
12 ],
13 "group": {
14 "kind": "build",
15 "isDefault": true
16 }
17 }
18 ]
19}
3. 编译
按F7编译,rebar3会创建一个_build目录来存放编译结果,默认情况下,项目结果会放在_build\default\lib目录对应项目名文件夹中,所有源文件编译到项目的ebin目录中,并创建src、include和priv的快捷方式。
4. 运行、调试
要运行调试,需要先进行配置,如下图所示创建launch.json
修改launch.json,在cwd中添加hello的路径和arguments参数。为了让运行前自动编译,可以添加preLaunchTask参数,指定任务名称为编译任务。
1{
2 // 使用 IntelliSense 了解相关属性。
3 // 悬停以查看现有属性的描述。
4 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
5 "version": "0.2.0",
6 "configurations": [
7 {
8 "name": "Launch erlang",
9 "type": "erlang",
10 "request": "launch",
11 "cwd": "${workspaceRoot}/hello",
12 "arguments": "-s hello_app",
13 "preLaunchTask": "rebar3 compile"
14 }
15 ]
16}
配置好后如果此时按F5调试会报错:
说是include不存在,这是因为rebar3会创建src、include和priv的快捷方式,但是hello项目中并不存在include和priv目录,所以创建的快捷方式无效。从命令行中dir,可以看到include、priv、src都是hello工作目录的快捷方式。 知道原因就好解决了,先删除_build目录,然后在hello工作目录添加目录include、priv,再次编译即可。
此时还不能打断点调试,因为rebar3在创建工程时hello_app.erl中的start函数是一个有2个参数的函数,而启动配置中只支持0个或者1个参数。所以还需要修改一下源文件,添加一个start函数:
此时运行调试即可断点查看变量、堆栈等信息。
五、使用CodeRunner运行
截止目前CoderRunner插件还不支持Erlang,不过可以自行添加,在settings.json中找到"code-runner.executorMap",添加erlang的命令即可,这里是使用escript的方式执行的,所以需要添加main/1入口函数。
1"erlang": "cd $dir && escript $fileName",
如有一个main.erl:
1-module(main).
2
3-export([main/1]).
4
5main(_Args) -> io:format("test~n").
使用CodeRunner执行Erlang:
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2020/2020-08-13-VSCode配置Erlang开发环境/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。