読者です 読者をやめる 読者になる 読者になる

conan を使って C++ で json を扱うためのパッケージを読みこむ

C++

conan のどんなパッケージがあるか調べていたら json を読みこむためのパッケージがあったのでせっかくなので試してみました。

[conanfile.txt を作成する]

適当にディレクトリを作成して conanfile.txt を作成します。

$ mkdir json && cd json

[conanfile.txt]

[requires]
json/1.0.0@paulobrizolara/stable

[generators]
gcc

[generators] にいろいろとビルドツールを設定できるんですが、今回はとりあえず gcc のコマンドオプションを生成するようにしました。 あとは C++ のソースも用意しておきます。

[json.cpp]

/json
|--conanfile.txt
|--json.cpp

[conan でパッケージをインストール]

conanfile.txt を作成したら conan install でパッケージをインストールします。

$ conan install .
Requirements
    json/1.0.0@paulobrizolara/stable from conan.io
Packages
    json/1.0.0@paulobrizolara/stable:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9

json/1.0.0@paulobrizolara/stable: Already installed!
PROJECT: Generated conaninfo.txt
PROJECT: Generated gcc created conanbuildinfo.gcc

これによりパッケージを使う上で必要な gcc のオプションが conanbuildinfo.gcc に出力されました。

[conanbuildinfo.gcc]

-I/home/my/.conan/data/json/1.0.0/paulobrizolara/stable/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include -L/home/my/.conan/data/json/1.0.0/paulobrizolara/stable/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/lib -Wl,-rpath=/home/my/.conan/data/json/1.0.0/paulobrizolara/stable/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/lib  -std=c++11

[コンパイル]

あとは conanbuildinfo.gcc を使用して gccコンパイルします。

$ g++ @conanbuildinfo.gcc json.cpp -o json
$ ./json
{
    "answer": {
        "everything": 42
    },
    "happy": true,
    "list": [
        1,
        0,
        2
    ],
    "name": "Niels",
    "nothing": null,
    "object": {
        "currency": "USD",
        "value": 42.99
    },
    "pi": 3.141
}

こんな感じで比較的簡単に conan でパッケージを使うことが出来ました。
今回は gcc のオプションを生成するように設定したので使い方も簡単ですね。
ただ、やっぱり1発でコンパイルまでしてくれる conan compile 的なサブオプションがほしいですねえ。