1. 程式人生 > >EOSIO開發(七)- 使用CLion檢視EOS程式碼

EOSIO開發(七)- 使用CLion檢視EOS程式碼

本文將會介紹如何使用CLion檢視EOS原始碼。

EOS的智慧合約基於C++開發,官方在github上提供了很多合約樣例,地址:
https://github.com/EOSIO/eos/tree/master/contracts

直接檢視這些樣例的原始碼無疑是學習合約開發最快速的方法,這時我們需要一個合適的IDE工具,尤其是IDE的程式碼追查功能,能夠大大提高閱讀原始碼的效率,在這推薦大家使用CLion。

Clion簡介

CLion是一款專為開發C及C++所設計的跨平臺IDE。由大名鼎鼎的JetBrains公司開發,以IntelliJ為基礎設計,支援Linux、macOS及Windows平臺。

下載地址:https://www.jetbrains.com/clion/download/

CLion需要收費,初次下載有30天的免費試用期。

編譯EOS原始碼

在使用CLion之前,需要先編譯eos原始碼,這樣才能在匯入原始碼之後使用IDE的程式碼追查功能。

eos提供了自動編譯指令碼,一鍵傻瓜式操作。下載原始碼後,進入eos目錄,執行自動編譯指令碼。

cd eos
./eosio_build.sh

編譯過程中會根據當前系統環境,下載相關依賴,以MacOS為例,有如下依賴。

![螢幕快照 2018-05-10 下午5.54.04](http://ot6uqhsry.bkt.clouddn.com/

螢幕快照 2018-05-10 下午5.54.04.png)

如果這些依賴不存在,會自動下載並且安裝,編譯成功後會顯示下面的內容。
![螢幕快照 2018-05-10 下午6.36.48](http://ot6uqhsry.bkt.clouddn.com/螢幕快照 2018-05-10 下午6.36.48.png)

匯入EOS原始碼到CLion

啟動CLion,選擇Import Project from Sources匯入eos目錄中的內容。
![螢幕快照 2018-05-10 下午6.12.00](http://ot6uqhsry.bkt.clouddn.com/螢幕快照 2018-05-10 下午6.12.00.png)

匯入時,會提示eos目錄下已有CMakeList.txt檔案,點選
Open Project

按鈕。
![螢幕快照 2018-05-10 下午6.20.25](http://ot6uqhsry.bkt.clouddn.com/螢幕快照 2018-05-10 下午6.20.25.png)

匯入後,CLion需要根據CmakeLists.txt檔案編譯整個專案,在CMake視窗會顯示當前的編譯進度,如果編譯完成後,能夠如下圖顯示[Finished]並且沒有報任何錯誤,那麼恭喜你匯入成功,接下來就可以愉快的閱讀原始碼了。
![螢幕快照 2018-05-10 下午8.55.56](http://ot6uqhsry.bkt.clouddn.com/螢幕快照 2018-05-10 下午8.55.56.png)

編譯失敗也沒有關係,這是正常情況,基本上第一次匯入時都會遇到各種各樣的問題。

在遇到問題時,有兩種比較有效的解決方案:
1、在 https://github.com/EOSIO/eos/issues 中看看別人有沒有提交類似的問題。
2、查Google。

下面是我曾經遇到的一些問題和解決方法,列出來希望對大家有幫助。

踩過的坑

系統:MacOS 10.13.3

1. Failed to find Gettext libintl (missing: Intl_INCLUDE_DIR).

錯誤資訊

Failed to find Gettext libintl (missing: Intl_INCLUDE_DIR)

解決方案

在終端執行下面的命令。

brew unlink gettext && brew link --force gettext
find /usr -name libintl* -print 2>/dev/null

2. Unable to find the requested Boost libraries.

錯誤資訊

Unable to find the requested Boost libraries.

Unable to find the Boost header files.  Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers.

解決方案
使用home_brew重新安裝boost,在終端執行下面的命令。

brew uninstall boost
brew install boost

進入CLion,重新編譯專案。在專案名稱上右鍵,選擇“Reload CMake Project”。
![螢幕快照 2018-05-14 下午8.17.15](http://ot6uqhsry.bkt.clouddn.com/螢幕快照 2018-05-14 下午8.17.15.png)

3. Could not find a package configuration file provided by “LLVM”.

錯誤資訊

Could not find a package configuration file provided by "LLVM" (requested version 4.0) with any of the following names:

  LLVMConfig.cmake
  llvm-config.cmake

Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set "LLVM_DIR" to a directory containing one of the above files.  If "LLVM" provides a separate development package or SDK, be sure it has been installed.

解決方案
首先確保已經安裝了llvm,通過下面的命令確認llvm版本資訊。

brew info llvm

如果已經正確安裝,開啟CLion的設定頁面(command + ,),找到cmake的環境配置。
2

在Environment中指定LLVM_DIR,對應llvm的本地路徑,例如:
LLVM_DIR=/usr/local/Cellar/llvm/4.0.1/lib/cmake/llvm

設定完成後重新編譯專案。

系列文章

EOSIO開發(一)使用Docker構建本地環境

EOSIO開發(二)執行合約樣例

EOSIO開發(三)錢包、賬戶與賬戶許可權之概念篇

EOSIO開發(四)- nodeos、keosd與cleos

EOSIO開發(五)- 錢包之實戰篇

EOSIO開發(六)- 賬戶之實戰篇

EOSIO開發(七)- 使用CLion檢視EOS程式碼

EOSIO開發(八)- 智慧合約基礎概念

博文地址

https://www.taowong.com/blog/2018/06/28/eos-develop-7.html