特定の言語やビルドシステムに依存しない依存関係マネージャが必要です。私はいくつかの優れたツール(Gradle、Bazel、Hunter、Biicode、Conanなど)を調べましたが、私の要件を満たしていないものはありません(下記参照)。私はGit SubmodulesとMercurial Subreposも使用しました。言語/プラットフォーム/ビルドに依存しない依存マネージャ
私のニーズを十分に(18 @議論:リンクされたビデオの55):この依存ツールの目標を要約する会議C++ 2014でダニエル・ファイファーによってpresentationに記述されている
- だけではなく、パッケージマネージャ
- が
- 事前に構築されたサポートまたはソースの依存関係は、ダウンロードしたり、ローカルで見つけることができます - 不要なダウンロード
- の様々な方法(すなわち、ダウンロード、またはVCSクローンを使用して取得し、システムインストーラ付きなど)
- 統合 - libには
- どのような方法でクロスプラットフォーム
さらに要件や明確化:
- サードパーティおよび/またはバージョン付きの依存関係のために適した、だけでなく、特定することができます(おそらくgit/mercurialのハッシュやタグで指定されている)バージョン管理されていない、および/または共同開発された依存関係です。
- 私が選択した代替依存バージョンを使用するために、指定されたフェッチ動作をオーバーライドするメカニズムを提供します。
- 依存関係ストアを手動で設定する必要はありません。私は冗長または循環依存性を避ける方法として中央の依存関係の場所に反対していません。しかし、リポジトリのクローンを作成し、依存マネージャを起動してすべてをビルドするトップレベルのビルドスクリプトを実行する必要があります。
- 私は自分のビルドシステムを変更する必要はありませんが、明らかにいくつかのトップレベルビルドで依存マネージャを使用し、それらの依存関係を個々のビルドに供給する必要があります。この要件は、個のビルドが依存関係マネージャを認識してはならないことを意味します。たとえば、CMakeをC++パッケージに使用する場合、CMakeLists.txtを変更して、特別なの依存関係を見つけるための関数呼び出しを行う必要はありません。むしろ、トップレベルのビルドマネージャは依存関係マネージャを呼び出して依存関係を取得し、CMakeが従来の方法(つまり、find_packageまたはadd_subdirectory)で使用できる引数を提供する必要があります。言い換えれば、私は常に手作業でトップレベルのビルドと依存マネージャの作業を行う必要があり、個々のビルドは違いを知るべきではありません。
:
- 依存関係が置かれた場所を見つけるために、事後の依存性マネージャを調べるための方法。これにより、共同開発されたソースリポジトリの依存関係の依存性メタデータのハッシュを自動的に更新するVCSフックを作成することができます。 (サブモジュールやサブレポのように)。
私はあなたの必要条件がC/C++パッケージマネージャにとって多すぎると思いますが、実現するのは非常に難しいかもしれません。 Conanは最も近いものであり、それらのいくつかを提供し、他のものに近いかもしれませんが、それは説明されているようにあなたのニーズを完全に満たすものではありません。詳細を知りたい場合や機能について話し合う場合は、ご連絡ください。 – drodri
@drodri - ありがとう。私は直接連絡します。繰り返しますが、私はC/C++パッケージマネージャ以上のものを探しています。異種の依存関係の集合を集めることができる依存関係マネージャーを私は望んでいます。そこでトップレベルのビルドマネージャーが、GoやRust、Sphinxなどのドキュメントの取得、設定、ビルドを担当する可能性があります。 – Ken
です。ちょうどいくつかのポインタ、錆について話をして、ちょうどの場合に行ってください。いくつかのコーンと錆の統合:http://blog.conan.io/2016/06/23/Rust-cargo-and-Conan-C_and_C++-package-manager-integration.html。 conanがgo-langを扱う仕組み:http://docs.conan.io/en/latest/examples/go.html – drodri