C/C++ のパッケージマネージャーである conan を使ってみた

TL で見かけたので試してみた。

[conan のインストール]

conanpip からインストールすることが出来ます。

$ pip install conan
$ conan --version 
Conan version 0.9.4

他には brewバイナリが配布されているみたいです。 詳しくはこちらへ。 ちなみにわたしの環境だとうまく動作しなかったので、ソースから直接インストールしました。

$ git clone https://github.com/conan-io/conan.git
$ cd conan
$ pip install -r conans/requirements.txt

[使ってみる]

Doc に書いてあるとおり、曖昧に使ってみます。

[プロジェクトの作成]

とりあえず、Doc に載ってる example をそのまま使ってみます。

$ git clone https://github.com/memsharded/example-poco-timer.git mytimer
$ cd mytimer

この中にある conanfile.txt に依存するライブラリやビルドツールの設定が記述されています。

[conanfile.txt]
[requires]
Poco/1.7.3@lasote/stable

[generators]
cmake

[ライブラリのインストール]

conan install で依存してるプロジェクトをインストールします。

$ mkdir build && cd build
$ conan install ..

これにより、依存してるライブラリがインストールされ、指定していたビルドツールの設定が生成されます(今回は .cmake が生成されます。

[cmake でビルド]

あとは cmake でビルドします。

(win)
$ cmake .. -G "Visual Studio 14 Win64"
$ cmake --build . --config Release

(linux, mac)
$ cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
$ cmake --build .
...
[100%] Built target timer
$ ./bin/timer
Callback called after 250 milliseconds.
...

こんな感じで conan を利用して依存してるパッケージの管理を行うことが出来ました。
今回は cmake を使用しましたが他にも Visual StudioXcode なんかのプロジェクトを生成することも出来ます。

[所感]

思ったよりも簡単に使うことが出来ました。
cmakeVisual Studio と言ったビルドツールに対応してるので既存のプロジェクトなんかでも使うことは出来そう。
ただ、個人的にはビルドまわりも conan 側でいい感じに吸収してくれると cmake とかにも依存する事がないので便利な感じはしました。
あとプロジェクト単位じゃなくてグローバル単位でもライブラリを扱いたいところ(これはやり方があるっぽいけど、まだわかってない
何にしてもこういうのが流行って一般的に利用される世の中になって欲しいですねえ。

[参照]