【コナン】

Conan とは?

最終更新:
💡 C/C++の依存関係と、ビルド済みライブラリを管理

C/C++向けのオープンソースの依存関係・パッケージ管理ツール。レシピやビルド済みバイナリをローカルキャッシュやリモートで管理し、環境や設定に適したパッケージを利用する。

📌 このページのポイント
ライブラリを配布・再利用 リモート レシピ・バイナリ 配布・取得用サーバー 開発環境 ローカル キャッシュ 適合する結果を再利用 CI環境 ローカル キャッシュ 適合する結果を再利用 設定・オプション・依存関係で識別 適合するバイナリがなければビルドも可能 ビルドはクライアント側で行う
矢印はリモートから各環境への取得例。手元のキャッシュを再利用する場合もある。OS・コンパイラ等と互換性の条件を確認し、必要ならクライアントでビルドする。
ひよこ ひよこ
Conanってvcpkgと同じジャンルのツールなの?
ペンギン先生 ペンギン先生
どちらもC/C++のパッケージ管理に使うツールだよ。Conanは、レシピとビルド済みバイナリを管理し、複数のリモートから取得したり、自社のパッケージを配布したりできるんだ。
ひよこ ひよこ
バイナリキャッシュって何がうれしいの?
ペンギン先生 ペンギン先生
ライブラリを毎回ソースから作り直す代わりに、適合するビルド結果を再利用できるよ。OS・コンパイラ・アーキテクチャ、オプションや依存関係などがバイナリの識別に関わる。再利用できる範囲はレシピや互換性の設定にもよるんだ。
ひよこ ひよこ
リモートとキャッシュは同じもの?
ペンギン先生 ペンギン先生
ローカルキャッシュは、手元のクライアントがパッケージを保管する場所。リモートは、取得や配布に使うサーバーだよ。ConanCenterなどの公開リモートも、Artifactoryなどで用意する社内リモートも使える。サーバーが自動でソースをビルドするという意味ではないんだ。
ひよこ ひよこ
パッケージのレシピはどう書くの?
ペンギン先生 ペンギン先生
conanfile.pyというPythonファイルに依存関係やソース、ビルド手順などを書くよ。単純に既存ライブラリを利用するならconanfile.txtにも依存関係を書けるけれど、txtだけではパッケージを作成できないんだ。
ひよこ ひよこ
CMakeでも使える?
ペンギン先生 ペンギン先生
使えるよ。Conanのジェネレーターで、依存関係やビルド設定をCMakeへ渡す。Conan自身がコンパイラの代わりになるわけではないので、ビルドツールや環境の設定も必要だよ。短縮できるビルド時間は、再利用できるバイナリやプロジェクトの条件で変わるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Conan」って出てきたら「C/C++のパッケージ管理とバイナリ配布ができるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Conan」 = C/C++向けパッケージ管理ツールの名称
💬 ライブラリの依存関係だけでなく、環境や設定の異なるバイナリも管理するツールだよ

参考資料

← 用語集にもどる