千家信息网

怎么用Visual Studio Code和CLion进行EOS开发

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"怎么用Visual Studio Code和CLion进行EOS开发",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Visua
千家信息网最后更新 2026年11月03日怎么用Visual Studio Code和CLion进行EOS开发

这篇文章主要讲解了"怎么用Visual Studio Code和CLion进行EOS开发",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Visual Studio Code和CLion进行EOS开发"吧!

设置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默认存在这里用于编译。紧接着是externals和libraries。两个文件夹都包含用于使整个编译过程更容易的库。

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

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

CMakeLists

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

1.CMakeLists.txt(4)

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

# Set the minimum required version of cmake for a projectcmake_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 valueset( 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 opensslif ("${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 librariesENDIF(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 contractsadd_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}",        }    ]}

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

compile.sh

# Create a build folder if it doesn't existmkdir -p build# Change the current directory to "build"cd build# Create all the build files neededcmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=Debug ..

build.sh

# Create a build folder if it doesn't existmkdir -p build# Change the current directory to "build"cd build# Create all the build files neededcmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=Debug ..# Buildmake

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

generate.sh

echo "Current working directory -" $1cd $1eosiocpp -g $2.abi $2.cpp

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

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

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

CLion 设置

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

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

感谢各位的阅读,以上就是"怎么用Visual Studio Code和CLion进行EOS开发"的内容了,经过本文的学习后,相信大家对怎么用Visual Studio Code和CLion进行EOS开发这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

文件 开发 命令 文件夹 合约 编译 过程 生成 项目 选择 配置 代码 就是 智能 结构 方式 脚本 这是 三个 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网金融监管科技数据 互联网科技深圳 朗新科技与工业互联网 苏州大垚互联网科技 金融科技和互联网金融 成都玖崟互联网科技有限公司乐商圈怎么样 科技互联网的估值 上海宁丞科技互联网 互联网金融科技展 互联网科技创新的路径 保险科技服务互联网营销体系 山东星卡互联网科技有限公司官网 互联网科技平台产品运营 互联网界的黑科技 张家口科技产业互联网平台 科技互联网经济论坛 数字科技和互联网金融哪个好 互联网科技创业计划的风险分析 广东猫王互联网科技有限公司电话 互联网科技垄断 世界互联网领先科技成果 丰台科技园 互联网 齐家互联网科技有限公司 开启互联网科技时代小说 互联网科技产品 中化能源互联网科技招聘 卓翼科技产业互联网合作 互联网科技公司营业执照怎么办理 黑科技 体验场景 互联网大会
0