仮想開発環境は以下を参照してください。
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.json
とtasks.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})
コメントを残す