EOS智能合约开发系列(五): 配置VS Code

工欲善其事,必先利其器!我们已经写了自己的第一个hello合约,随着合约功能越来越复杂,我们需要一个趁手的兵器用用才行。本文就介绍一款神器。过去几年,不羁用过了不少IDE。不过最近两年,不羁发现了VS Code,如获至宝,并一直使用至今。

安装VS Code

VS Code功能非常强大,我之前用过eclipse、sublime text、Atom,然后最好的用的还是VS Code。我现在写Go用它,写reactjs和nodejs用它,如今写C++还是用它。没错,它就是这么牛,这么强大。话不多说,下载安装。
链接在这里:https://code.visualstudio.com/Download。

下载后的安装过程比较傻瓜,我就不多介绍了。不过为了能在编写C++代码时行云流水,我们需要一个插件作为辅助。

C/C++ 插件

image.png

如上图所示,在左边有个插件按钮,点开,会显示上面这样的一个插件列表,标星星的那个就是我已经安装的插件C/C++。你可以在上面的搜索栏里输入C/C。看到它之后,点一下它,就能在右边的主窗口中看见一个绿色的安装按钮了。

安装成功之后,按照提示重启一下VS code,插件即可生效。

打开workspace

还记得我们在上篇文章中,建立的~/eos-workspace(是的,我钟爱$HOME目录)文件夹吗?我们已经写的hello合约就在里面。

我们在VS Code里打开这个文件夹:

File -> Open...,(我的系统用的是英文系统,如果你用的是中文系统,对应的菜单命令应该是:文件——>打开...,so easy 对吧,后面我就不再对我这些菜单做翻译了)。然后选择刚刚的那个文件夹就好了。

之后你应该能看到这么个界面了:

image.png

你肯定发现了,1位置有我们的hello合约代码所在的文件夹了;当你点开顶部的View菜单,会弹出2这个菜单,你点开Terminal这个选项,就会看到在底部有个3窗口,并自动生成了一个终端,可以执行命令行。这个终端非常有用,可以节省不少时间。建议你记下你自己操作系统上打开这个终端的快捷键,在2位置,terminal这个子菜单的右边。

现在你可以在打开的终端里执行编译hello合约的命令了。注意,打开终端后的默认目录,是我们的workspace目录:~/eos-workspace

cd hello
eosiocpp -o ./hello.wast ./hello.cpp
eosiocpp -g ./hello.abi ./hello.cpp

简化编译流程

编译是我们经常做的事情,让我们写个脚本来简化编译流程吧,把如下脚本保存后MakeContract文件,

#/bin/bash
cd $1
/Users/james/eos/build/tools/eosiocpp -o ./$1.wast ./$1.cpp
/Users/james/eos/build/tools/eosiocpp -g ./$1.abi ./$1.cpp

如果你是windows系统,请把它改为bat脚本。

然后我们为MakeContract添加可执行属性(windows系统由于是根据文件后缀来判断是否可执行的,所以你可以把写好的bat文件,加上.bat后缀即可):

chmod a+x MakeContract

如此,我们就可以这样来编译hello合约了:

./MakeContract hello

假如将来我们写了个智能合约,名字叫game,我们把合约代码放在了game文件夹下,与hello同级,那么我们就可以这样来编译game:

./MakeContract game

还记得,VS Code 是自带 terminal的,我们可以用快捷键打开terminal,然后执行上面的命令来编译合约,非常快捷。更多的快捷键可以从网上查找,或者直接从官网查找,用户也可以自定义快捷键。这里就不做赘述。

更快捷的编译

如果你嫌输入命令太麻烦,可以配置task来编译命令,可以在task菜单里配置新的task,VS Code会自动帮你建一个task.json文件,我们把这个task.json文件改成类似下面这样:

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "label": "buildHello",
      "type": "shell",
      "command": "./MakeContract",
      "args": [
        "hello"
      ],
      "group": "build",
      // Use the standard MS compiler pattern to detect errors, warnings and infos
      "problemMatcher": "$msCompile"
    }
  ]
}

这是一个json格式的配置文件,非常清晰;如果有多个智能合约,可以直接在tasks数组里配置。比如像下面这样,我新建了一个truelove智能合约,可以在tasks里这样配置:

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "label": "buildHello",
      "type": "shell",
      "command": "./MakeContract",
      "args": [
        "hello"
      ],
      "group": "build",
      // Use the standard MS compiler pattern to detect errors, warnings and infos
      "problemMatcher": "$msCompile"
    },
    {
      "label": "buildTruelove",
      "type": "shell",
      "command": "./MakeContract",
      "args": [
        "truelove"
      ],
      "group": "build",
      // Use the standard MS compiler pattern to detect errors, warnings and infos
      "problemMatcher": "$msCompile"
    }
  ]
}

你可能会问,配置这个有啥用啊。这时,我们可以这样操作,使用快捷键调出命令窗口,在mac上快捷键是:Command + p,然后输入task,并按个空格,这时,会出现下面的样子:

image.png

你会发现出来一个下拉框,正是我们刚刚配置的两个task的名字,这时你可以上下选择task,按回车即可执行该task。

如果你讨厌输入命令呢,就可以使用这个方面来执行编译了。

让阅读代码更方便

VS Code有个很好的功能,你可能发现了。当你把鼠标放在函数被调用时的函数名上,同时按住Command键,你会发现你的鼠标在经过函数位置时,会变成小手图标,并会显示一个小窗口,在该小窗口里是该函数定义的代码。当你点击的时候,就会跳转到函数定义部分。

不过,有时侯,也并不总是奏效。因为VS Code可能会找不到我们的头文件,这个时候,就需要我们主动帮助一下它了。

image.png

比如,在上图中,你会看到有时候,你引用的某个头文件下面有个波浪号,这代表这个头文件找不到,或者它引用的某个头文件找不到。

如果我们点击一下它,会发现VS Code在这个头文件位置会显示出一个小黄灯的图标。我们点下这个图标,它会给出如何解决这个问题的提示,比如它会提醒你找出丢失的头文件位置,并把它加到当前 workspace 目录的下的.vscode/c_cpp_properties.json里,如果这个文件不存在,它会帮你生成一个的。你只需要按照提示来操作就好了。

你可能会问,我怎么知道是那个文件找不到呢?别急,你看上图中的最下面的箭头指向区域,有个PROBLEMS的tab窗口,这个会显示出详细内容的。

好了,VS Code功能很强大,很难一篇文章就介绍完。这篇文章算是个入门吧,剩下的功能就靠你探索了。

明天我们继续EOS智能合约的内容。
简介:不羁,一名程序员;专研EOS技术,玩转EOS智能合约开发。
微信公众号:know_it_well
知识星球地址:https://t.zsxq.com/QvbuzFM

你可能感兴趣的:(EOS智能合约开发系列(五): 配置VS Code)