EOS基础全家桶(十二)智能合约IDE-VSCode
简介
上一篇我们介绍了EOS的专用IDE工具EOS Studio,该工具的优势是简单,易上手,但是灵活性低,且对系统资源开销大,依赖多,容易出现功能异常。那么我们开发人员最容易使用的,可能还是深度定制化的IDE,今天我们介绍如果用强大的VSCode来配置一个EOS的开发环境。
准备
最简配置:
- eosio.cdt
- VSCode
- C++插件
豪华配置:
- eosio.cdt
- VSCode
- C++插件
- docker
- docker的eosio.cdt镜像
- eosio.cdt源码及Intellisence配置
安装eosio.cdt
为了编译合约,eosio.cdt是必须的,这里我们提供两种安装的方式,各有优势,直接安装可以更方便的使用,但是对于需要使用不同cdt版本编译时,就会很麻烦;而使用docker版的,可以更好的使用多版本cdt,缺点是与系统集成不好,使用cmake编码会很麻烦。
直接安装可以参考我前面的文章EOS基础全家桶(二)安装中的 CDT-Contract Delevop Tools合约开发工具包 章节。
如果想使用docker镜像,可以看下面使用eosio.cdt的docker镜像。
安装VSCode
我不怀疑你已经有了VS Code,甚至已经使用的很熟练了。但如果你还没有,那我要强烈推荐你安装一个,也许你已经有了其他语言的IDE,比如.net的Visual Studio,java的IntelliJ Idea……但是你都会有用到VSCode的地方,这是一个免费、开源、集成git、可调试可运行、拥有智能提示和众多插件的多语言编辑器,你现在在看的文章也是我使用VSCode编辑的,没错,它对markdown语法很友好,加上丰富的插件,让你拥有一款轻量且功能强大的md编辑器。
好了,安利了这么久,我们言归正传。打开VSCode的官网,在中间显眼的地方就能看到Download了,下载你所需的版本,这里有Stable和Insider的版本,Stable是稳定版,没有明显的bug,Insider则是每周迭代更新的尝鲜版,能更早的用上新功能,但是不免会有些明显的bug。
安装VSCode插件
VSCode的插件非常丰富,这得力于它的开源策略,创造出了一个良性社区环境。我们今天只介绍和EOS的智能合约相关的插件,其他的搭建可以自己选择,也可参考网上的各种环境构建的教程。
- 【必须】C/C++
我们合约开发的语言是C++,所以这个库就基本成必须了。这个库提供了C语言相关的智能提示和调试等功能。
- Chinese (Simplified) Language Pack for Visual Studio Code
这个不是必须,只是VSCode默认是英文的,而多语言采用的是扩展来安装,如果你看英文的不太习惯,那么这个包就是必须的了。
- Git Extension Pack
VSCode默认集成了git的功能,但是我们可以让它更强大,这是一个扩展包,包含了一系列好用的git工具,包括文件、行的历史记录,可视化的管理界面等等。
- Settings Sync
这个插件很实用,特别是当你装了一堆插件后,你想在多个设备上同步时,它借助github上的gist功能同步VSCode上的设置,让你在不同的设备上都能同步所有插件和设置。
- EOSIDE
这个插件其实我没有完全使用过,是一个我后来在插件库中找到的,这是一个借助python库中的EOSFactory来实现EOS合约开发的各种自动化功能的插件,有兴趣的同学可以自行尝试。
豪华配置
至此其实你已经拥有了一个最简洁而完备的EOS智能合约开发环境了,如果你需要多cdt版本编译环境或者你想让自己有更好的智能提示,那么下面的配置可以帮助到你。
使用eosio.cdt的docker镜像
我们可以直接使用EOS Studio上传的docker镜像,我们打开docker官方的Hub页面,然后搜索eosio.cdt,找到eostudio下的。
我们进入查看tags,他的tag都是以cdt的版本命名的,从1.3~1.7都有,非常的良心。
我们选择所需的版本进行拉取,建议直接拉取1.6以上的版本,因为我们后面的智能合约编写也会基于较新的版本进行讲解。
docker pull eostudio/eosio.cdt:v1.6.3
如果你有多个cdt版本的编译需求,可以拉取各个版本的镜像,在后续我们介绍合约编译的时候介绍如何使用。
注意: docker相关的安装和操作,请参考我前面的文章EOS基础全家桶(一)开篇中的 Docker 章节。
下载eosio.cdt的源码
智能提示是基于将引用的文件加载并建立索引后为我们提供的便利功能,那么我们如果没有安装eosio.cdt而是使用的docker镜像,或者我们希望可以直接查看使用的类型或者方法的源码实现,那么我们就需要下载eosio.cdt的源码,并配置相关的路径引入。
#直接拉取最新的代码
git clone https://github.com/EOSIO/eosio.cdt.git
为了能和我们实际编译保持一致,这里建议大家拉取和你编译会使用的eosio.cdt相同的版本代码,就是你安装或者从docker拉取的镜像的版本保持一致。
配置开发环境
在你的合约开发目录下新建一个.vscode文件夹,然后新建一个c_cpp_properties.json的文件,这个文件是C/C++插件会使用到的配置文件。
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/Volumes/Disk/PublicGit/eosio.cdt/libraries",
"/Volumes/Disk/PublicGit/eosio.cdt/libraries/boost/include"
],
"defines": [],
"macFrameworkPath": [
"/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
其中includePath就是我们添加eosio.cdt源码路径的配置项,需要将eosio.cdt的libraries和libraries/boost/include都添加上。
其他的配置请结合自身的实际情况配置,若不清楚,建议使用${default},比如"cppStandard":"${default}"。更多相关配置,请参考C/C++插件的配置文档。
总结
我们已经完成了EOS的智能合约的开发环境的准备,无论你是使用EOS Studio还是使用VSCode,都能够帮助你进行EOS的智能合约的开发,他们各有千秋,而选择一个适合你的IDE才是最重要的。
EOS基础全家桶(十二)智能合约IDE-VSCode的更多相关文章
- EOS基础全家桶(七)合约表操作
简介 本篇我们开始来为后续合约开发做准备了,先来说说EOS内置的系统合约的功能吧,本篇将侧重于合约表数据的查询,这将有利于我们理解EOS的功能,并可以进行必要的数据查询. EOS基础全家桶(七)合约表 ...
- EOS基础全家桶(十四)智能合约进阶
简介 通过上一期的学习,大家应该能写一些简单的功能了,但是在实际生产中的功能需求往往要复杂很多,今天我就继续和大家分享下智能合约中的一些高级用法和功能. 使用docker编译 如果你需要使用不同版本的 ...
- EOS基础全家桶(十)交易Action操作
简介 区块链上的所有操作都是通过交易(Transaction)上链的,无论你是转账交易还是发起的智能合约的调用,而EOS和传统区块链不同的是EOS在一个交易里可以发起多个行为(Action),这使得E ...
- EOS基础全家桶(五)钱包管理
简介 本篇我们将会学习EOS自带的命令行钱包的使用方法,我们将会使用cleos来控制keosd服务对本地钱包进行管理. 虽然现在市面上已经有很多支持EOS的钱包了,有Web钱包,有app钱包,还有浏览 ...
- EOS基础全家桶(八)jungle测试网的使用
简介 前面我们已经学习了一些EOS的基础知识了,但是在EOS主网上的很多操作(比如:抵押.赎回.买卖内存)都是需要EOS链被正式激活后才可使用,而激活EOS链还需要很多的准备操作,我打算在单独的一篇文 ...
- EOS基础全家桶(六)账号管理
简介 本篇我们会学习最基本的账号相关的操作,包括了创建账号和查询,关于账号资源的操作因为必须先部署系统合约,所以我们会留到后面单独写一篇来讲解. 6-EOS基础全家桶(六)账号管理 简介 账号介绍 账 ...
- EOS基础全家桶(十五)智能合约进阶2
简介 今天我们继续补充智能合约的进阶使用技巧,这次的主题是交易,合约内我们除了可以发起内联action的调用,很多使用还需要直接调用其他的合约action或者以交易的形式调用自身的action. 发起 ...
- EOS基础全家桶(十三)智能合约基础
简介 智能合约是现在区块链的一大特色,而不同的链使用的智能合约的虚拟机各不相同,编码语言也有很大差异.而今天我们开始学习EOS的智能合约,我也是从EOS初期一直开发合约至今,期间踩过无数坑,也在Sta ...
- EOS基础全家桶(十一)智能合约IDE-EOS_Studio
简介 我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入2.0时代,而EOS的智能合约更进一步,提供了更多的便利性和可能性.为了进一步了解智能合约,并进行开发,我们需要先 ...
随机推荐
- 计算某天的下一天:黑盒测试之等价类划分+JUnit参数化测试
题目要求 测试以下程序:该程序有三个输入变量month.day.year(month.day和year均为整数值,并且满足:1≤month≤12.1≤day≤31和1900≤year≤2050),分别 ...
- 随笔之——浮动(float)的影响及其清除、、clear与overflow-hidden清除float的不同!!!
一.浮动(float)对内联元素的影响. 1.我们都知道,内联元素(例如:span/img/input...)在正常情况下不可以对其设置宽高的,它的大小之只和它内部内容的多少有关. 我们怎样才可以对其 ...
- 22.Java面试学习平台-整合OSS对象存储
SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...
- 2019-2020-1 20199310《Linux内核原理与分析》第九周作业
1.问题描述 在前面的文章中,学习了译链接的过程和ELF可执行文件格式,对Linux内核装载和启动一个可执行程序,本次内容围绕对进程调度的时机和进程切换进行,分析进程的调度时机,调度策略和算法,并跟踪 ...
- 如何在没有安装 Python 的机器上运行 Python 程序
cmd 命令 1. pip install pyinstaller 2. pyinstaller <path to your prog.py> 3. 应用程序在prog.py同路径下的 d ...
- [Inno Setup] 对比字符串
[Code] var MD5Comp: string; procedure ExitProcess(uExitCode:UINT); external 'ExitProcess@kernel32.dl ...
- java中Runnable和Callable的区别
文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...
- 微服务为什么一定要用docker
引言 早在2013年的时候,docker就已经发行,然而那会还是很少人了解docker.一直到2014年,Martin Fowler提出了微服务的概念,两个不相干的技术终于走在了一起,创造了今天的辉煌 ...
- CSS开发技巧(二):表格合并边框后的单元格宽度计算
前言: 分离边框模型和合并边框模型是表格的两种模型,它通过以下属性确定: border-collapse:separate(默认值) | collapse | inherit 当采用分离边框模型时,表 ...
- Redis(一):数据结构与对象
前言 本书是Redis设计与实现的读书笔记,旨在对Redis底层的数据结构及实现有一定了解.本书所有的代码基于Redis 3.0. 简单动态字符串 SDS Redis没有直接使用C语言中的字符串,而是 ...