先日リリースされたBitcoin Core v29.0でビルドシステムが刷新された↓
https://bitcoincore.org/ja/releases/29.0/
これまで長らくAutotoolsを使ってビルドしていたけど↓
techmedia-think.hatenablog.com
ビルドシステムがCMakeに移行された。
CMakeを使ったビルド
当然ながらCMakeが必要になるので、入っていない場合は、インストールする↓
$ sudo apt install cmake
あとはBitcoin Coreをcloneしたディレクトリで、CMakeでビルドするだけ↓
$ cmake -B build $ cmake --build build -j 17
-jは並列処理のオプションで、物理コア+1を指定してる。
これまでは、src直下にbitcoindなどの実行ファイルが生成されてたけど、↑の最初の-Bで指定したビルドディレクトリ内のbinディレクトリに各実行ファイルは生成され、ライブラリはlibディレクトリに格納される。
また、これまでconfigureで指定していたオプションは、今後はCMake変数として設定することになる。各オプションの変数については↓のマッピングファイルで確認できる。
Autotools to CMake Options Mapping · bitcoin-core/bitcoin-devwiki Wiki · GitHub
たとえば、GUIもビルドする場合は以下のように
$ cmake -DBUILD_GUI=ON -B build
IDE連携
CMakeになって何が嬉しいかというと、開発に使用する各IDEのCMakeサポートが利用可能になり、CMakeプロジェクトとしてロードするだけでビルドなどの設定が自動的にIDEに反映されること。
src/test以下にあるBoost.Testを使った単体テストも、IDE(CLion)のエディタ上で簡単に実行できる↓

デバッガの利用
↑でDebug選択したら簡単にデバッグできるかなと思ったけど、ブレークポイントを貼っても止まらない。DebugウィンドウのGDBのタブを確認すると
No source file named /home/azuchi/bitcoin/src/test/bech32_tests.cpp.
というログが。どうもGDBがソースファイルを見つけられてないのが原因っぽい。とりあえず、ホームディレクトリ直下に以下の.gdbinitファイルを生成して、GDBのソースファイル検索パスにBitcoinのソースディレクトリを追加してみた。
$ echo "directory /home/azuchi/bitcoin/src" >> ~/.gdbinit
この状態で実行するとちゃんとソースファイルを見つけてデバッグが可能になる↓

快適デバッグ環境が手に入った。