EOS区块链开发IDE推荐使用Visual Studio Code和CLion

每一个开发人员都需要一个良好的IDE,EOS开发也是一样,为项目开发过程构建一个良好的IDE环境是第一步。这就是为什么我们要写这个如何使用VS Code或者CLion进行EOS开发的快速教程的原因。

我们还为VS Code创建了一些脚本,这些脚本将你在终端中使用的一些命令自动化。

设置Visual Studio Code

首先,如果你还没有这些VS Code扩展的话,安装一下。对于EOS Dapp开发,它们将非常有帮助:

  • C/C++ - VS Code的智能感知、调试和代码浏览
  • CMake - Visual Studio Code的CMake语言支持
  • CMake Tools - Visual Studio Code扩展CMake支持
  • WebAssembly - 用于WebAssembly文本表示的语法高亮显示

当我们开发EOSIO dApps时,我们需要编写.hpp和.cpp文件中的代码。然而,这是整个过程中很小的一部分。大多数时候,我们需要生成一些其他文件,这些文件将用于在区块链上部署合约,进行单元测试等等。这就是CMake有用的地方。

CMake是用于控制软件编译过程的命令行工具。一旦它在你的IDE内正确设置的话,会使整个开发过程更加容易。

既然我们要使用CMake工具,我们应该对我们的项目结构做一些改变。我们将重用EOSIO项目的构架,因为它拥有我们所需要的一切。当然,我们有一些小的变化。

我们有一张图片,展示了新的项目结构。让我们看一看。

首先,我们有了build文件夹。这是放置所有构建内容的地方。你所使用的每一个生成文件都在那里。接下来是CMakeModules,它包含一些有用的Cmake模块,这些自定义模块用于编译过程。

contracts是我们的核心文件夹。这就是我们要放置智能合约的地方。目前,eosiolib, libc++musl默认存在这里用于编译。紧接着是externalslibraries。两个文件夹都包含用于使整个编译过程更容易的库。

项目结构中最后一个重要的东西是配置文件CMakeLists.txt。每个目录都有自己的带有命令的CMakeLists.txt文件。

可以在我们的repo中找到所有的文件夹和脚本的新项目结构。

CMakeLists

让我们看一些配置文件,因为你需要知道如何使用它们。

1.CMakeLists.txt(4)

这是设置编译过程的主要配置文件。你应该知道,当你开发Dapp时,你需要设置项目名称。版本和语言是可选的。

# Set the minimum required version of cmake for a project
cmake_minimum_required(VERSION 3.5)

# Set a name, version, and enable languages for the entire project.
project( ProjectName )

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/libraries/fc/CMakeModules")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")

# Load and run CMake code from a file or module.
include( GNUInstallDirs )
include( SetupTargetMacros )

# Set a normal, cache, or environment variable to a given value
set( CMAKE_CXX_STANDARD 14 )
set( CMAKE_CXX_EXTENSIONS ON )
set( CXX_STANDARD_REQUIRED ON)

set( CLI_CLIENT_EXECUTABLE_NAME cleos )
set( GUI_CLIENT_EXECUTABLE_NAME eosio )

set(CMAKE_EXPORT_COMPILE_COMMANDS "ON")

# add defaults for openssl
if ("${OPENSSL_ROOT_DIR}" STREQUAL "")
   if (NOT "$ENV{OPENSSL_ROOT_DIR}" STREQUAL "")
      set(OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT_DIR})
      set(OPENSSL_INCLUDE_DIR ${OPENSSL_ROOT_DIR}/include)
   elseif (APPLE)
      set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl")
      set(OPENSSL_INCLUDE_DIR "/usr/local/opt/openssl/include")
   elseif(UNIX AND NOT APPLE)
      set(OPENSSL_ROOT_DIR "/usr/include/openssl")
      set(OPENSSL_INCLUDE_DIR "/usr/include/openssl/include")
   else()
      message(FATAL_ERROR "openssl not found and don‘t know where to look, please specify OPENSSL_ROOT_DIR")
   endif()
endif()

if(UNIX)
  if(APPLE)
    set(whole_archive_flag "-force_load")
    set(no_whole_archive_flag "")
  else()
    set(whole_archive_flag "--whole-archive")
    set(no_whole_archive_flag "--no-whole-archive")
  endif()
else()
  set(whole_archive_flag "--whole-archive")
  set(no_whole_archive_flag "--no-whole-archive")
endif()

SET( Boost_USE_STATIC_LIBS ON CACHE STRING "ON or OFF" )
IF( WIN32 )
  SET(BOOST_ROOT $ENV{BOOST_ROOT})
  set(Boost_USE_MULTITHREADED ON)
  set(BOOST_ALL_DYN_LINK OFF) # force dynamic linking for all libraries
ENDIF(WIN32)
FIND_PACKAGE(Boost 1.66 REQUIRED COMPONENTS
    thread
    date_time
    filesystem
    system
    program_options
    signals
    serialization
    chrono
    unit_test_framework
    context
    locale
    iostreams)

# Add a subdirectory to the build.
add_subdirectory(externals)

include(wasm)

add_subdirectory(libraries)
add_subdirectory(contracts)

2.CMakeLists.txt (3)

第二个配置文件在contracts文件夹内。每一个新的智能合约都应该作为这个配置中的子目录来添加。重要的是不要忘了这一步合约不会编译。CMake不知道。

set(DEFAULT_SYSTEM_INCLUDE_FOLDERS ${CMAKE_SOURCE_DIR}/contracts/libc++/upstream/include ${CMAKE_SOURCE_DIR}/contracts/musl/upstream/include ${Boost_INCLUDE_DIR})
set(STANDARD_INCLUDE_FOLDERS ${CMAKE_SOURCE_DIR}/contracts ${CMAKE_SOURCE_DIR}/externals/magic_get/include)

add_subdirectory(eosiolib)
add_subdirectory(musl)
add_subdirectory(libc++)

# Your contracts (add the name of the folder which contains you smart contract)
add_subdirectory(Players)

3.CMakeLists.txt(2)

每个智能合约都有自己的配置文件。这里需要注意的是,每个合约都有不同的TARGET,大部分情况下,它就是文件夹的名称。

file(GLOB ABI_FILES "*.abi")
configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY)

# Change "Players" with the name of the folder containing your smart contracts
add_wast_executable(TARGET Players
  INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}"
  LIBRARIES libc libc++ eosiolib
  DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
)

现在,当我们有了新的项目结构时,我们必须定制命令来编译和构建我们所做的每一件事。但是怎么开始呢?幸运的是,VS Code有一些很酷的东西叫做Tasks。它帮助我们自动化每个命令,只需点击几下。

VS Code的Tasks

首先,我们必须生成包含我们的自定义命令的tasks.json文件。按?+?+P打开VS代码中的command palette,然后键入““Tasks”并选择“Configure Task”。

然后下一步选择Create tasks.json file from template,然后Others

VS code将创建一个名为“.vscode”的文件夹,在里面,你可以找到tasks.json。现在我们需要添加命令。复制并粘贴下面的代码到tasks.json

{
    "version": "2.0.0",
    "reveal": "always",
    "options": {
        "cwd": "${workspaceRoot}"
    },
    "tasks": [
        {
            "label": "CMake",
            "type": "shell",
            "command": "sh ${workspaceRoot}/.vscode/scripts/compile.sh"
        },
        {
            "label": "Build",
            "type": "shell",
            "command": "sh ${workspaceRoot}/.vscode/scripts/build.sh"
        },
        {
            "label": "Generate ABI",
            "type": "shell",
            "command": "sh ${workspaceRoot}/.vscode/scripts/generate.sh ${fileDirname} ${fileBasenameNoExtension}",
        }
    ]
}

我们已经创建了三个自定义命令,命名为CMakeBuildGenerate ABI。它们执行三个shell脚本compile.sh,build.shgenerate.sh。前两个脚本基本上都是相同的,除了build.sh还进行了编译以外。可能大多数时候你会使用第二个。

compile.sh

# Create a build folder if it doesn‘t exist
mkdir -p build

# Change the current directory to "build"
cd build

# Create all the build files needed
cmake -G ‘Unix Makefiles‘ -DCMAKE_BUILD_TYPE=Debug ..

build.sh

# Create a build folder if it doesn‘t exist
mkdir -p build

# Change the current directory to "build"
cd build

# Create all the build files needed
cmake -G ‘Unix Makefiles‘ -DCMAKE_BUILD_TYPE=Debug ..

# Build
make

另一方面,使用第三个脚本generate.sh(生成智能合约ABI)。在生成过程中需要生成一些文件。必须在合约文件夹内执行命令。选择一个.cpp文件并运行它。

generate.sh

echo "Current working directory -" $1
cd $1

eosiocpp -g $2.abi $2.cpp

令人惊叹的!我们已经准备好了VS Code。为了使整个开发变得更容易,我们将为我们的命令创建快捷方式。当你仍然在VS代码中时,点击Preferences – Keyboard Shortcuts。快捷方式窗口找到并打开keybindings.json(它在顶部):

一旦keybindings.json打开,我们将创建快捷方式。对于我们的命令,我们选择了cmd+ecmd+rcmd+i,但是你可以选择其他。这是你必须添加的json:

一旦你已经完成了所有的设置,现在准备在VS Code上开发EOS DApps吧.

CLion 设置

与VS Code相比,设置CLion非常简单。当加载CLion中的架构时,IDE会自动在cmake-build-debug文件夹中创建所有生成文件。一旦准备就绪,就可以使用“?+F9”快捷方式执行实际构建。这就是你需要做的一切,太简单了吧?

但是,如果你想为CMake设置附加项,可以从Preferences – Build, Execution, Deployment中选择。

更多关于配置CLion中的CMake的信息,你可以在CLion IDE的官方文档中找到。写的非常好!

分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门

EOS教程

原文地址:http://blog.51cto.com/13697184/2156038

时间: 2024-10-09 10:46:44

EOS区块链开发IDE推荐使用Visual Studio Code和CLion的相关文章

Visual Studio Code开发TypeScript

[Tool] 使用Visual Studio Code开发TypeScript [Tool] 使用Visual Studio Code开发TypeScript 注意 依照本篇操作步骤实作,就可以在「Windows」.「OS X」操作系统上,使用Visual Studio Code开发TypeScript. 前言 为了解决JavaScript:缺少面向对象语法.缺少编译期间错误检查...等等问题.微软提供了一个开源的TypeScript语言,让开发人员能够使用面向对象撰写TypeScript程序代

Project Perfect让Swift在server端跑起来-Perfect in Visual Studio Code (四)

编者语 : 本系列文章已经被Perfect官方引用了,这样的感觉非常好.感恩!Thx all ! Visual Studio Code是一个轻量级的编辑器,但也功能丰富,通过插件你能够完毕如Cordova,ReactNative,NodeJS,PHP,ASP.NET Core 的开发.上文通过Visual Studio Code对Perfect文件进行编辑,但编译过程还是在终端中完毕. 事实上通过对Visual Studio Code 加入tasks.json就能够完毕对Perfect项目的编译

Visual Studio Code中C/C++的环境配置

Visual Studio Code 的功能十分强大,但是对我这种小白不是很友好,它和其它的集成开发工具不同,Visual Studio Code (以下简称VS)自身其实仅仅是一个编辑器, 是不具备编译代码和运行代码的功能的,它只有与其他语言的编译器和自身各种各样强大的扩展结合起来才称的上是开发工具,所以我们自己需要自己手动的来配置它的编译环境, 以下就是我对配置VS下C/C++开发环境所做的一个小教程. 1,下载MinGW编译器 地址:https://sourceforge.net/proj

EOS区块链游戏系统定制开发

EOS区块链游戏系统定制开发 找131.2935.5821 微/电 EOS生态app系统开发,EOS区块链技术系统开发,EOS生态游戏app开发 自区块链成为热潮之后,很多公司都义无反顾地扑向了这项新技术,这其中,一部分是随时都会被风吹跑的投机派,而另一派则是实实在在想用区块链这项技术干实事的人. 2018年是区块链应用落地的元年,那么今年区块链在全球迅速升温,各个国家相继出台区块链数字货币的相关政策,甚至已经用于银行的贷款或者转账等等.同时在这个迅速发展的领域也迎来了新的突破--EOS. EO

golang区块链开发的视频教程推荐

目前网上关于golang区块链开发的资源很少,以太坊智能合约相关的课程倒是很多,可能是由于前者的难度比后者难度大,课程开发需要投入更多精力.搜了一圈之后没结果,我就直接去之前没覆盖的视频网站找资源,包括慕课网.腾讯课堂.网易云课堂. 结果还真找到了,不过这个golang区块链开发的课程名字太文艺了点,不够直白,不容易用搜索引擎搜索到.讲师的讲解思路清晰,简练易懂,实在是学习go语言开发区块链居家旅行之良课(课程免费). 下面是链接和截图. <私有区块链,我们一起GO> https://www.

区块链开发技术路线选择的思考(之一)

现在整个技术社区的注意力主要还是在 Web 和移动开发上面,相关人才供销两旺.不过个别有心人已经开始转向大数据分析.深度学习.VR/AR 这些前景看好的技术.最近几个月区块链非常火,所以也有极少数开发者在关注区块链的开发技术. 应该比较客观的看待现在区块链的这一把火.目前无论在中国还是在国外,讨论区块链最积极最热闹的主要是政府官员.金融政策研究者.技术未来学家和学院派学者,跟他们相比,真正在写代码的人发出的声音很小.官员们重视,说明这个技术的潜在影响力巨大,学者重视,说明还有很多技术问题有待解决

金万城招商182672:区块链开发是什么?

区块链从出生到现在已有十年之久,十年间也经历了三次主要的发展更新阶段,从比特币到以太坊再到如今的EOS.区块链的发展也催生了许多行业,比如"挖矿",这个挖矿可与传统的矿工挖矿不同,这是指通过矿机挖掘虚拟货币,也就是比特币.区块链也让许多软件开发公司的业务布局发生了变化,区块链开发的概念逐渐在这些it公司传播开来. 区块链开发是什么呢?简单来说,区块链开发就是基于区块链技术所做的项目开发,这是一个比较广但又比较专的概念.区块链虽然有十年的发展历程了,但它却是在近几年才被人们所关注的所以现

区块链开发中使用的最流行的编程语言

我们目前正处于一个新兴的区块链开发行业中.区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣.由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的应用程序,因此缺乏能力强大的区块链开发人员.随着数十亿人进入这一领域,区块链开发商的薪酬和需求不断升级,项目互相竞标,以吸引留在市场上的最佳区块链人才.这种淘金热可能让一些开发人员怀疑他们是否具备了进入这个行业所需要的东西,特别是在这个新行业中最受追捧的编程语言.几乎所有流行的编程语言都在区块链行业

区块链开发技术路线的思考(二)

在前一篇文章里讨论了基于 Ethereum 和 Hyperledger 开发区块链项目的优缺点.我的结论是明显的,两者志向远大,假以时日或许会一飞冲天,但现阶段的成熟度都还不够.如果你有心现在投入区块链的开发,那么我的建议是,基于 Bitcoin 自建链,同时关注甚至参与 Ethereum 或 Hyperledger 核心项目,帮它们夯实地基. Bitcoin 无疑是最成熟.质量最佳.讨论最深入的区块链项目,如果按照关注度来算市场份额的话,在区块链领域,Bitcoin 可能三分天下有其二.它目前