def yasuharu519(self):

日々の妄想

CMake を利用したライブラリの作成

前回の記事では、 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 ファイルのコピーなどをせずにすむため、 気軽に使えるようになりそうです。 自分で作ったライブラリも、このようにまとめておくといろんなところで使えて便利ですね。