Develop with pleasure!

福岡でCloudとかBlockchainとか。

Bitcoin Core v29.0がCMakeをサポート

先日リリースされた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

この状態で実行するとちゃんとソースファイルを見つけてデバッグが可能になる↓

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