2016-09-26 9 views
9

私はC++の世界ではとても新しいので、ごめんなさい。私はちょっとgoogleしましたが、適切な答えを見つけることができませんでした。C++依存関係を管理する方法(例えばgithubのライブラリを使用)

私の質問はかなりシンプルです。私はlibをC++の世界でどのように使うべきですか?たとえば、Javaの場合 - このタスクにはmavengradleがあります。 Pythonでは - 私はpipを使用します。 JavaScriptでnpmbowerすべてのものを行う。 C#ではnugetを使用するか、DLL libをプロジェクトに追加するだけです。しかし、C++のように見えるものはそれほど簡単ではありません。

私はconanというツールを見つけましたが、libsの量はかなり少なく、私は何をしているのでしょうか。

したがって、たとえば、nlp lib metaを使用したいとします。彼らはインストーラファイルを提供していないようです。だから私はgithubからソースを取得する必要があると仮定します。コンパイルしてコンパイルしたファイルを自分のプロジェクトに追加するか、プロジェクトにlibというフォルダがあり、そのフォルダにmeta'sソースを入れてから、プロジェクトにあるようにmeta'sソースを操作してください。


私の質問は、ビューのソース管理ポイントから特定のmeta libに、より多くのインストール方法に関するものではありません。たとえばWindowsVisual Studioを使用していますが、私のコーリーはのコードがLinuxです。そして、私はC++世界の依存関係を管理するための適切な方法であることを認識することを望んでいません。

+0

あなたがリンクしているライブラリは、さまざまなプラットフォームのかなり広範囲なセットアップガイドを持っているようです。あなたはそれに従ってみましたか? –

+0

はい、しかし、彼らのガイドは主にスタンドアロンツールとしてlibを使用していますが、私はコードでそれを参照する必要があるので、私の質問は特定のlibをインストールする方法ではなく、むしろソース管理の意味でのlibsプロジェクト。 –

+2

C++コミュニティには、見つかったマネージャのライブラリを見つけることができない限り、コードをダウンロードして自分でビルドすることができない限り、一般的にはユビキタスパッケージマネージャがありません。 – Niall

答えて

3

C++にはpipまたはnpm/bowerのようなものはありません。私はmavenまたはgradleがC++ライブラリを処理することを納得できるかどうかわかりません。一般的に

、あなたはディレクトリ内

  • ヘッダファイルのどこかに
  • ライブラリファイル(静的ライブラリ、またはDLLを/共有オブジェクトのいずれか)で終わるする必要があるとしています。ライブラリーがいくつかのブーストライブラリーのようなヘッダー専用ライブラリーである場合、これは必要ありません。

マシン上にビルドすることで(オープンソースのプロジェクトでは一般的ですが、Linuxプラットフォームではプロジェクトで)、コンパイル済みのバイナリをダウンロードして(Windowsライブラリでは一般的ですが、特に支払った)。

図書館を構築するための手順は図書館のウェブサイトに掲載されることを望みます。コメントに書かれているように、「メタ」はそれをかなりよくしているようです。

ライブラリを使用してコンパイルしようとすると、ヘッダーファイルを含むディレクトリを指定するコマンドラインオプション(たとえば、-I)が必要になる場合があります。また、リンカーにリンクするようにリンカオプション(例:-l)あなたの図書館に対して

4

C++にはライブラリ用のパッケージマネージャがありません。何人かはそこにいて、(コナンのように)まだ小さくて散在している人になろうとします。

あなたはインストールできる「-dev」パッケージをいくつか持っていますが、「すべて」ではありません。

ほとんどの場合、自分でダウンロードすることになります。次に、それらのライブラリを統合するという問題があります。オペレーティングシステムごとに異なるビルドシステムがあるので、C++ファイルの構築方法を見なければなりません。

ビジュアルスタジオのウィンドウのように、ビジュアルスタジオプロジェクトまたはnmake互換のメイクファイルを入手してライブラリを作成し、プロジェクトに追加する必要があります。 linuxのmakefileと同じです。

cmakeのような上位レベルのビルドフレームワークがいくつかあります。あなたのポストにある例は、CMakeでも動作します。そのため、cmakeビルド環境に統合するのは簡単ですが、これはcmakeビルド環境を使用/統合しようとしている他のライブラリにのみ適用されます(例えばboost/qtがこれをしています)。

これはいくつかの考えです。残念ながら、ビルドシステムにも統合された真の中央C++パケットリポジトリがないため、これに対する簡単な決定的な答えはありません。

0

nuget packagesで公開されている人気の高いC++が数多くあります。 ギャラリーで検索するには、通常nativeまたはc++のタグを使用します。明らかに、あなたのOS用のnugetマネージャが必要です.C++のnugetパッケージは、MSBuildに多くの不満を抱いていると確信していますので、非Visual Studio指向のセットアップをうまく動作させるには問題があります。

また、実際にはGradleはnative dependenciesもサポートしています。少し前に見ましたが、VS 2015のサポートが不足していたため、その作業が縮小されました。

2

Cgetは、標準のcmakeを使用するパッケージをインストールし、LinuxおよびWindowsで動作します。パッケージをgithubから直接取得するための構文を短縮しました(cget install google/googletestなど)。

さらに、依存関係はrequirements.txtファイルにリストすることで自動的にダウンロードすることもできます。

cmake以外のパッケージをインストールするためのレシピもあります。hereには300を超えるライブラリがあります。だから、ちょうどcget install pfultz2/cget-recipes curlでカールをインストールすることができます。

関連する問題