仮想開発環境に接続した VSCode で Symbol をビルド

仮想開発環境は以下を参照してください。

Symbol のビルド

ここからは、仮想開発環境に接続した VSCode 上のターミナルで実行します。

必要なパッケージをインストール

sudo apt update
sudo apt -y upgrade
sudo apt -y install git gcc g++ curl libssl-dev libgtest-dev ninja-build pkg-config python3-pip
pip install --user pyyaml

CMake インストール

Ubuntu 22.04 の CMake のバージョンが古いので、新しいバージョンをインストールします。

署名鍵のコピー

wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null

リポジトリの追加

echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null

パッケージ更新&インストール

sudo apt update
sudo apt -y install cmake

Symbol のソースをクローン

現在メインネットで動いているバージョンを取得します。クローン先はどのディレクトリでもいいです。今回は、ホームディレクトリにクローンしました。

cd
git clone https://github.com/symbol/symbol.git -b client/catapult/v1.0.3.7

依存パッケージのビルド

Symbol サーバーをビルドするのに必要な依存パッケージをビルドするため、symbol/client/catapultに入ります。

cd symbol/client/catapult

下記コマンドでビルドします。ビルド中にエラー出たら解消して、再実行してください。再実行時は--downloadオプション不要です。

PYTHONPATH="../../jenkins/catapult/" \
 python3 "../../jenkins/catapult/installDepsLocal.py" \
 --target "./deps" \
 --versions "../../jenkins/catapult/versions.properties" \
 --build \
 --download

VSCode で Symbol をビルド

拡張機能

下記の拡張機能を追加します。

  • C/C++ Extension Pack

コンパイラはリストにあるモノを選択しておけば良いと思います。

VSCode 設定とタスク

VSCode を起動し、symbol/client/catapultを開きます。
.vscodeディレクトリを作成し、下記の2つのファイルsettings.jsontasks.jsonを作成します。settings.jsonでパスを通しているので、各自環境に合わせて変更してください。また、何かしらソースを変更すると思うので、テストもビルドする-DENABLE_TESTS=ONにしています。

{
  "cmake.environment": {
    "BOOST_ROOT": "~/symbol/client/catapult/deps/boost",
  },
  "cmake.configureArgs": [
    "-DENABLE_TESTS=ON",
    "-DCMAKE_PREFIX_PATH='~/symbol/client/catapult/deps/facebook;~/symbol/client/catapult/deps/google;~/symbol/client/catapult/deps/mongodb;~/symbol/client/catapult/deps/zeromq;~/symbol/client/catapult/deps/openssl;'",
    "-GNinja"
  ],
  "cmake.deleteBuildDirOnCleanConfigure": false,
  "cmake.skipConfigureIfCachePresent": true,
}
{
 "version": "2.0.0",
 "tasks": [
  {
   "type": "shell",
   "label": "Symbol 構成",
   "command": "ninja publish",
   "options": {
    "cwd": "${workspaceFolder}/build"
   },
   "dependsOn": [
    "CMake: 構成"
   ],
   "problemMatcher": [],
   "detail": "ビルド前の `ninja publish` コマンド"
  }
 ]
}

Symbol 構成の実行

メニュー 「ターミナル->タスクの実行」 から 「Symbol 構成」を選択します。依存パッケージのバージョンチェック等が走りますので、上手くパスが通せてなかったりするとここでエラーが出ます。エラーが出た場合は頑張って解消してください。エラーが出てやり直す場合は、キャッシュが残ってるので buildディレクトリ内を全て削除する必要があります。

ビルド

ビルド時のテストが有効になっているので、CMakeの構成にあるビルドタイプを「RelWithDebInfo」に変更してください。

VSCode のウィンドウ左下辺りに「ビルド」ボタンがあるので、それを押す。または、「ターミナル->ビルド タスクの実行…」から「CMake:ビルド」を選択でも可。

動作確認

ビルドが終わったら、動作確認を行いましょう。

パスを通す

vi ~/.bashrc

以下を末行に追加。

export LD_LIBRARY_PATH=~/symbol/client/catapult/deps/facebook/lib:~/symbol/client/catapult/deps/boost/lib:~/symbol/client/catapult/deps/zeromq/lib:~/symbol/client/catapult/build/bin

.bashrcを再読込。

source ~/.bashrc

実行

下記コマンドを実行してヘルプが表示されれば、ビルドは成功してると思って良いです。

./bin/catapult.tools.address --help

CMake の警告が気になる

cmake_policy を設定すると消えるようです。

### setup boost
message("--- locating boost dependencies ---")
cmake_policy(SET CMP0144 OLD)
cmake_policy(SET CMP0167 OLD)
find_package(Boost 1.83.0 EXACT COMPONENTS ${CATAPULT_BOOST_COMPONENTS} REQUIRED)
include_directories(SYSTEM ${Boost_INCLUDE_DIR})

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です