Open4

conan package manager

kwikwi

conan では reference という用語は、package や recipe を「指し示す呼び名」という意味で使われる。網羅的に整備されたマニュアルでもないし、C++ の参照でもない。reference の最も長い形式は package reference で、name/version@user/channel:package_id_hash の形式。
この形式は省略形があり、コンテキストによって省略形が使えたり使えなかったり、あるいは解釈が変わってコマンド出力が変化したりする。混乱しやすいポイント。

  • name/version@user/channel
  • name/version@
  • name/version
  • version@
  • user/channel
kwikwi

conan server へ登録されるものは recipe と binary の二種類がある。binary をアップロードするには:

  • recipe を local に export
  • install で binary を生成
  • その後に upload --all でまとめてアップロードする

最初 recipe それ自体は単なる recipe でしかないけれど、export すると package recipe となる。package に紐づけて binary などを upload できるようになる。

kwikwi

conanfile.py と conanfile.txt と conan.lock の関係

conanfile.py は recipe になり、ビルドの手続きを記述できる。conanfile.txt は必要になるパッケージなどをテキストで記述できる。ちょうど python での setup.py と setup.cfg の関係に似ている。
conanfile.py と conanfile.txt は通常は排他利用。

conan.lock は依存関係をさらに強く記述するもので、hash の特定なども行う。python での requirements.txt と pipfile.lock のような関係。pip freeze で requirements.txt に完全指定してよいのと同様、conanfile.txt に完全指定することもできる。conan.lock では hash 計算などのメタ情報が追加される。

kwikwi

conan とデプロイの関係。conan は開発用途で使われることを期待している。*.h, *.a, *.so などの位置をコンパイラが認識できるように変数を設定する。一般的にデプロイ時は「インストール」が行われるが、これはOSが期待するファイル配置という意味である。Conan はパッケージのためにインストールは行うが、デプロイのインストールではない。そういう意味で conan は maven のような立ち位置にある。
デプロイは conan 本体の後段に作られることを期待しているようで、2.0 で整理される模様。