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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 每一个开发人员都需要一个良好的IDE,EOS开发也是一样,为项目开发过程构建一个良好的IDE环境是第一步。这就是为...
    编程狂魔阅读 4,712评论 0 10
  • 1 EOS智能合约的介绍1.1 所需背景知识1.2 EOS智能合约基础知识1.3 技术局限性 2 智能合约文件2....
    cenkai88阅读 30,480评论 5 28
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 1.“正确的价值”往往在它没被大多数人发现时才是最大的 如果你没能力判断它未来的走势,其实现在的你和当年的你并没有...
    艺涵JS阅读 108评论 0 0
  • “对未来的慷慨 是投身到真实的现在 ” | 笑靥如花| 壹 大家过年都还好吗?有没有收到压岁钱呢,有没有回老家看看...
    997笑靥如花阅读 1,218评论 0 6