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 下午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的環境配置。
在Environment中指定LLVM_DIR,對應llvm的本地路徑,例如:
LLVM_DIR=/usr/local/Cellar/llvm/4.0.1/lib/cmake/llvm
設定完成後重新編譯專案。
系列文章
EOSIO開發(四)- nodeos、keosd與cleos