POCO C++ Libraries
POCO C++ Libraries とは C++ ベースでのネットワークアプリケーションやインターネットアプリケーションを開発するためのオープンソースのクロスプラットフォームライブラリです。以下のサイトで公開されています(画像をクリックすると開発元のホームページにジャンプします):
デスクトップやサーバ、IoTデバイスや組込みシステムまでの適用が想定されているライブラリであり、 Boost Software License として公開されています。
その特徴は開発元の 「Features」 に示されています。
国内ではサイト「POCO Fanatic」 に色々と詳しい情報が掲載されています。
2018年以降は更新されてないみたいで、POCOのv1.8.1までの話しがのっています。
なお POCO の最新バージョンは 1.10.1 (2020-02-10) みたいです。
今回、ちょっと作りたいものがあって C++ での webフレームワークみたいなのを探していたのですが、 この POCO がひっかかりまして、少し試してみたいと思っています。
Ubuntu 18.04 でのライブラリ構築
僕の開発用メインマシンは Ubuntu 18.04 なので、その上での開発環境整備を進めたく思います。
POCOのダウンロードページ に行くとダウンロード情報が載っていますが、今回は、 COMPLETE EDITION (全てのライブラリが含まれているが外部ライブラリとして OpenSSL, MySQLクライアント, ODBCライブラリが必要) で進めてみようと思います。
まずは同ページにある poco-1.10.1-all.tar.gz をダウンロードして展開します。
そこに README ファイルがあり、そこにインストール方法が書かれています。
Linux では cmake でのインストールか configure でのインストールとの 2者があるみたいです。
今回は Windows 上でもビルドが可能である cmake で試してみようと思います。
Ubuntu 18.04 での cmake ビルド
READMEファイル上の記載では以下のように進めるとのことです。
1. create a cmake-build directory (e.g. in the POCO root directory): $ mkdir cmake-build 2. and run CMake from there: $ cd cmake-build $ cmake .. $ make -s -j (or build the generated Visual Studio solution on Windows)
今回はこの通りにすすめてみようと思います。
cmake ..の所までは進めたのですが、そこで以下のメッセージが表示されていました:
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) -- Could NOT find APR (missing: APR_INCLUDE_DIR APR_LIBRARY) -- Could NOT find APRUTIL (missing: APRUTIL_INCLUDE_DIR APRUTIL_LIBRARY) -- Could NOT find Apache2 (missing: APACHE2_INCLUDE_DIR) -- Could NOT find MYSQL (missing: MYSQL_INCLUDE_DIR MYSQL_LIBRARY) -- Could NOT find PostgreSQL (missing: PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR) -- Could NOT find ODBC (missing: ODBC_LIBRARY ODBC_INCLUDE_DIR)
開発マシンとして色々と開発用ライブラリは入れてきましたが、まだまだ入っていないものが多いのですね。。。
ざっとネットで検索して以下のパッケージを追加でインストールしました。わかり易く apt install での インストールパッケージ表現で記載しておきます。
-
sudo apt install openssl-dev libssl-dev libapr1-dev libaprutil1-dev apache2-dev libmysqlclient-dev libpq-dev unixodbc-dev
これで cmake を無事に通りました。その時の表示を参考までに以下に掲載しておきます。
~/POCO/poco-1.10.1-all/cmake-build$ cmake .. -- Checking for C++14 compiler -- Checking for C++14 compiler - available -- Found ODBC: /usr/lib/x86_64-linux-gnu/libodbc.so -- Building without tests & samples -- Using internal sqlite, zlib, pcre, expat, ... -- SQLite Support Enabled -- MySQL Support Disabled -- PostgreSQL Support Disabled -- ODBC Support Disabled -- CMake 3.10.2 successfully configured Poco using Unix Makefiles generator -- Poco package version: 1.10.1 -- Building dynamic libraries -- [cmake] Installation target path: /usr/local -- [cmake] Bulid for OS type: Linux -- [cmake] Build for OS version: 5.3.0-46-generic -- [cmake] Build for CPU type: x86_64 -- [cmake] Build type: RelWithDebInfo -- [cmake] Build with cxx flags: -O2 -g -DNDEBUG -- [cmake] Build with c flags: -O2 -g -DNDEBUG -- Building: Encodings -- Building: XML -- Building: JSON -- Building: Util -- Building: Net -- Building: MongoDB -- Building: Redis -- Building: Data -- Building: Zip -- Building: PageCompiler -- Building: File2Page -- Configuring done -- Generating done -- Build files have been written to: ~/POCO/poco-1.10.1-all/cmake-build
無事に cmake が通ったので make でビルドを行わせました。
make の -j オプションということもありますが、途中、結構メモリを使用するみたいです。
途中の様子は以下のパフォーマンスモニタの通りです。
途中でメモリ使用量が30%から90%まで一気に増えていきました。
開発マシンのメモリ搭載量は16GBで、その60%を使うみたいなので、さっくりと10GBぐらいはメモリを消費する形でしょうか。
ただ、そのぐらいまでは一気にメモリを使いますが、それ以降は一つずつライブラリのビルドが行われていましたので、 メモリ使用量は増えず、数分程度でエラーなくビルドが完了しました。
これで無事にライブラリが生成出来たようなので次回は色々と使って試してみるのと、ライブラリの内部調査もしてみようかと思います。
それで現在作ろうとしているものに使えそうと判断したら、少しずつその開発を進めたく思います。

