conan package manager
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
conan server へ登録されるものは recipe と binary の二種類がある。binary をアップロードするには:
- recipe を local に export
- install で binary を生成
- その後に upload --all でまとめてアップロードする
最初 recipe それ自体は単なる recipe でしかないけれど、export すると package recipe となる。package に紐づけて binary などを upload できるようになる。
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 計算などのメタ情報が追加される。
conan とデプロイの関係。conan は開発用途で使われることを期待している。*.h, *.a, *.so などの位置をコンパイラが認識できるように変数を設定する。一般的にデプロイ時は「インストール」が行われるが、これはOSが期待するファイル配置という意味である。Conan はパッケージのためにインストールは行うが、デプロイのインストールではない。そういう意味で conan は maven のような立ち位置にある。
デプロイは conan 本体の後段に作られることを期待しているようで、2.0 で整理される模様。