The Modern C++ Challenge 第9章

The Modern C++ Challenge 第8章 の続きです。

今回は第9章に挑戦します。

まずは目次を読む。

第9章 データのシリアル化

73 XML との間のデータのシリアライズとデシリアライズ 74 XPath を使用した XML からのデータの選択 75 データを JSONシリアライズする 76 JSON からのデータのデシリアライズ 77 映画のリストを PDF に印刷する 78 画像のコレクションから PDF を作成する

問題文を読む。

問73 XML との間のデータのシリアライズとデシリアライズ 映画のリストを XML ファイルにシリアライズし、映画のリストを含む XML ファイルをデシリアライズできるプログラムを作成します。 各映画には、数値識別子、タイトル、リリース年、分単位の長さ、監督のリスト、作家のリスト、および俳優名とキャラクター名を含む配役のリストがあります。

ソースコードを斜め読みして実行する。 この章は外部ライブラリを使っていて、 すんなり実行できなかった。

問73 問74 にて pugixml ライブラリを使っている。 Mac では brew コマンドでインストールできるので それを使う。

homebrew: - pugixml

問73 問75 問76 にて nlohmannjson ライブラリを使っている。 ヘッダーファイルをコピーしてビルドする。

nlohmann-json

問73 問77 問78 にて PDF-Writer ライブラリを使っている。 これは手強かった。

PDF-Writer

git clone でソースファイルをダウンロードする。
cmake でビルドして、共有ライブラリを作成する。
この ライブラリは単独では動かず他のライブラリを必要とする。
それらを揃える。
libpng libjpeg libtiff-4 freetype2 zlib
pkg-config から参照できるようにする。

一通り実行できたので、
Modern C++ に着目して、ソースコードを読んでみる。

第67問にて std::make_unique を使っている。

cpprefjp: std::make_unique

https://github.com/ohwada/The-Modern-Cpp-Challenge/tree/main/The-Modern-Cpp-Challenge/Chapter09