前回の記事では、 Instagram API を使うクライアントプログラムを C++ で作成しました。 API からの json のパースには、dropbox/json11 を使用しましたが、このレポジトリには、json11.hpp と json11.cpp があるだけで、 使う側で、使いたいプログラムにそのまま追加して使用するような形になっています。
使いたいときに、ソースを毎回コピーしてくるのはなかなか面倒なので、 ライブラリにして、再利用性を高めたいと思います。
CMake で作ってみた
これを見ながらできたのがこちらのもの。
実際に、dropbox/json11 を clone してきて、 ビルドを試してみたいと思います。
$ git clone https://github.com/dropbox/json11 $ git clone https://gist.github.com/eea3429db10320df7983.git cmake $ cp cmake/CMakeLists.txt json11 $ cd json11 $ cmake . $ make $ make install
と実行すると、
[100%] Built target json11 Install the project... -- Install configuration: "" -- Installing: /usr/local/lib/libjson11.a -- Installing: /usr/local/include/json11.hpp
と表示され、 /usr/local/include 以下にヘッダファイルがインストールされ、 /usr/local/lib 以下にスタティックライブラリがインストールされます。
作ったライブラリを試してみる
前回の記事 では、json11 の hpp, cpp ファイルをコピーしてきて、ビルドをしておりました。
今回、ライブラリのインストールを行ったので、前回書いたプログラムの
#include "json11.hpp"
が
#include <json11.hpp>
となり、ビルドの方法も
$ g++ -std=c++11 -lrestclient-cpp json11.cpp crawl_instagram.cpp
となっていたものが、
$ g++ -std=c++11 -lrestclient-cpp -ljson11 crawl_instagram.cpp
で済むようになります。
このように、使いたいプロジェクトに毎回 cpp ファイルのコピーなどをせずにすむため、 気軽に使えるようになりそうです。 自分で作ったライブラリも、このようにまとめておくといろんなところで使えて便利ですね。