ソースから C ドライバー ライブラリを構築
項目一覧
このページでは、 libbson
とlibmongoc
を元のソースコード形式からダウンロード、解凍、構成、構築する方法について詳しく説明します。
Tip
追加情報
ドロップダウン(このドロップダウンのような)には、チュートリアルを完了するために必要ではない追加情報と説明的な詳細が含まれていますが、特定のチュートリアル手順の意味を説明する必要がある上位ユーザーには役立つ場合があります。
次のページでは、事前に決定する必要があるいくつかの名前付き「変数」を使用します。 チュートリアルのステップで参照されている値が参照されている場合は、その値をそのステップに置き換える必要があります。
Tip
以下も参照してください。
を構築する前に、サポートされているプラットフォームで実行していることを確認する必要がある場合があります。 サポートされているプラットフォームのリストについては、 mongo-c-Driver プラットフォーム サポートページを参照してください。
バージョンの選択
開始する前に、ダウンロードするmongo-c-driver
のバージョンを確認してください。 使用可能なバージョンのリストは、 Githubリポジトリ タグ ページ で確認できます 。(このドキュメントに記載されている現在のバージョンは1です。 28 . 0 。)
このページの残りの部分で、 $VERSION
は、このチュートリアル用にビルドするmongo-c-driver
のバージョン番号を示します。
ソースの取得
mongo-c-driver
ソースコードを取得するには、主に次の 2 つの方法があります。
重要
開発ブランチから構築するのではなく、安定版リリース バージョンのドライバーを使用することを強くお勧めします。 リポジトリのアーカイブをgit clone
またはダウンロードする場合は、必ずリリース タグ(例: Git の--branch
引数)を指定してください。
Git を使用したダウンロード
Github を使用すると、C ドライバー リポジトリは Github URL https://github.com/mongodb/mongo-c-Driver.github URL からクローンできます。 。リリースバージョンの Git タグは、対応するバージョン(例: 「 1 . 28 . 0 」)。 コマンドラインを使用してリポジトリをクローンするには、次のコマンドを使用できます。
$ git clone https://github.com/mongodb/mongo-c-driver.git --branch="$VERSION" "$SOURCE"
Tip
名前に関係なく、 git-clone
の--branch
引数は リポジトリタグからのクローンにも使用できます。
リリース アーカイブのダウンロード
リポジトリのアーカイブされたスナップショットは、Github リリース ページ から取得できます 。任意のリリースに添付されているmongo-c-driver-x.y.z.tar.gz
アーカイブには、ビルドに必要な最小限のファイルセットが含まれています。
## Download using wget: $ wget "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.tar.gz" \ --output-document="mongo-c-driver-$VERSION.tar.gz" ## Extract using tar: $ tar xf "mongo-c-driver-$VERSION.tar.gz"
## Using curl: $ curl "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.tar.gz" \ --output="mongo-c-driver-$VERSION.tar.gz" ## Extract using tar: $ tar xf "mongo-c-driver-$VERSION.tar.gz"
## Use Invoke-WebRequest: PS> $url = "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.zip" PS> $file = "mongo-c-driver-$VERSION.zip" PS> Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $file ## Extract using Expand-Archive: PS> Expand-Archive mongo-c-driver-$VERSION.zip
上記のコマンドでは、 tar
/ Expand-Archive
コマンドを実行したディレクトリ内に新しいディレクトリmongo-c-driver-$VERSION
が作成されます(注: PowerShell では同じ名前の追加の中間サブディレクトリが作成されます)。 このディレクトリは、ドライバー ソース ツリーのルートです(これらのドキュメントでは$SOURCE
と参照します)。 $SOURCE
ディレクトリには最上位のCMakeLists.txt
ファイルが含まれている必要があります。
前提条件の取得
プロジェクトをビルドするには、いくつかの前提条件が利用可能である必要があります。
libmongoc
とlibbson
の両方のプロジェクトで Cake が使用されています ビルド構成用。
注意
プラットフォームで使用可能な最新の安定した CMax をダウンロードすることを強くお勧めしますが、必須ではありません。
Tip
最新の CMax を取得する
CMax の新しい安定版リリースは 、CSpec ダウンロード ページ から取得できます。
Windows と macOS の場合は、単純に CSpec .msi
/ .dmg
( .zip
/ .tar.gz
ではない)をダウンロードし、それを使用して Cake をインストールします。
Linux では、自己抽出型 shell スクリプト( .sh
で終了)をダウンロードし、 sh
ユーティリティを使用して実行し、インストールを実行するための適切な引数を渡します。 たとえば、 x86_64
プラットフォーム上の CSpec 3.27.0では、 cmake-3.27.0-linux-x86_64.sh
スクリプトで次のコマンドを使用できます。
$ sh cmake-3.27.0-linux-x86_64.sh --prefix="$HOME/.local" --exclude-subdir --skip-license
$HOME/.local/bin
が$PATH
リストにあると仮定すると、 3.27.0のcmake
コマンドが使用可能になります。
--help
オプションを shell スクリプトに渡すと、詳細な情報が表示されます。
このページの残りの部分では、 cmake
がPATH
環境変数のコマンドとして使用でき、shell から「 cmake
」として実行できることを前提とします。 これは、コマンドラインから CSpec に--version
をリクエストすることでテストできます。
$ cmake --version cmake version 3.21.4 CMake suite maintained and supported by Kitware (kitware.com/cmake).
注意
libbson
のみをビルドする場合は、CMax でビルドに十分です。 追加の C ドライバー機能には追加の外部依存関係のインストールが必要になる場合がありますが、ここではそれらは心配しません。
libbson の構成
重要
名前$BUILD
をパス$SOURCE/_build
にします。 これは、ビルドされたファイルが CSpec によって書き込まれるディレクトリになります。
$SOURCE
とビルド ディレクトリ$BUILD
のmongo-c-driver
のソース ディレクトリがある場合、コマンドラインから次のコマンドを実行して、 libbson
とlibmongoc
の両方でプロジェクトを構成できます。
$ cmake -S $SOURCE -B $BUILD \ -D ENABLE_EXTRA_ALIGNMENT=OFF \ -D ENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF \ -D CMAKE_BUILD_TYPE=RelWithDebInfo \ -D BUILD_VERSION="$VERSION" \ -D ENABLE_MONGOC=OFF
すべての依存関係が満たされている場合、上記のコマンドは成功し、次の結果で終了します。
$ cmake … ## … (Lines of output) … -- Generating done -- Build files have been written to: $BUILD
構成がエラーで失敗した場合、エラー メッセージと情報については CSpec 出力を参照してください。 続行する前に、構成が成功していることを確認してください。
Tip
これらの CSpec 引数はどのような意味を持ちますか。
BUILD_VERSION
は、ビルド結果に含めるバージョン番号を設定します。 これは、「 ソースの取得 」でダウンロードされたソース ドライバーのバージョンと同じ値に設定する必要があります。
ENABLE_EXTRA_ALIGNMENT
とENABLE_AUTOMATIC_INIT_AND_CLEANUP
はmongo-c-driver
の一部であり、ABI 互換性の目的でのみデフォルトで有効になっている非推奨の機能に対応しています。 可能な場合は常にこれらの機能を無効にすることを強くお勧めします。
ENABLE_MONGOC=OFF
引数はlibmongoc
のビルドを無効にします。 次のセクションでそれを構築します。
CMAKE_BUILD_TYPE
設定は、生成されるコードのバリアントを CMax に指示します。 RelWithDebInfo
の場合、最適化されたバイナリは生成されますが、デバッグ情報は引き続き含まれます。 CM存在_ビルド_タイプ は マルチコンフィギュレーション ジェネレーター(Visual Studio)で、ビルドおよびインストール時に--config
オプションに依存するようにします。
プロジェクトを構築する
プロジェクトが正常に構成されたら、CMax を使用してビルドを実行できます。
$ cmake --build $BUILD --config RelWithDebInfo --parallel
正しく構成され、すべての依存関係が満たされている場合、上記のコマンドは構成されたコンポーネントのコンパイルとリンクに進みます。 上記のコマンドが失敗する場合は、環境にエラーがあるか、サポートされていないかテストされていないプラットフォームを使用している可能性があります。 詳細については、ビルド ツールの出力を参照してください。
Tip
--config オプション
--config
オプションは、マルチ構成ジェネレーター(つまり、 Visual Studio)に書き込まれます。 これは、代わりにCMAKE_BUILD_TYPE
を使用する他のジェネレーターには影響しません。
ビルド結果のインストール
$PREFIX
をパス$SOURCE/_install
にします。 CSpec を使用してビルドされた結果をインストールできます。
$ cmake --install "$BUILD" --prefix "$PREFIX" --config RelWithDebInfo
このコマンドは、 mongo-c-driver
のビルド結果を$PREFIX
ディレクトリにインストールします。
Tip
--config オプション
--config
オプションは マルチコンフィギュレーション ジェネレーター( Visual Studio など)は、それ以外の場合は無視されます。 --config
--config
に指定された値は、cmake --build
とともに指定された値と同じである必要があります。
Tip
以下も参照してください。
上記のスニペットは、ソース ディレクトリ自体のサブディレクトリにmongo-c-driver
をインストールしますが、これは通常のワークフローではありません。 mongo-c-driver
の構成と構築に問題がなければ、 「 ソースから libbson/libmongoc をインストールする方法 」のページで、ソースからのインストール オプションについて詳しく説明します。
libmongoc による構成
libbson 用の構成から上記の手順に沿った場合、 を含む最終結果にはlibbson
のみが含まれ、完全な C データベース ドライバー ライブラリは含まれません。 libmongoc
のビルドは、 ENABLE_MONGOC
Cake 変数を使用して有効または無効にします。 CMax を再度実行しますが、 ENABLE_MONGOC
をTRUE
に設定します。
$ cmake -D ENABLE_MONGOC=ON $BUILD
上記のコマンドが成功した場合、プロジェクトはlibmongoc
で構築するように再構成されました。 プロジェクトをビルドし、ビルド結果を再度インストールするのプロセスに従って、 libmongoc
をビルドしてインストールします。
脚注
[1] | Xcode でプロジェクトを構成してビルドする場合は、環境内で Xcode コマンドライン ツールをインストールし、使用できるようにする必要があります。 コマンドライン環境内から、次を実行します。
$PATH で使用できるようになります。 |
[2] | Microsoft Visual C++ を使用してプロジェクトを構成してビルドする場合は、C# またはビルド コマンドを実行するときに Visual C++ ツールと環境変数を設定する必要がある場合があります。多くの場合、CSpec は Visual Studio のインストールを検出し、次を自動的にロードします:環境自体が実行される場合 この自動検出は、CMax の-G 、 -T 、および-A オプションで制御できます。 -G オプションは、使用される Visual Studio バージョンを選択するため、最も重要です。 サポートされている Visual Studio のバージョンは、インストールされている CSpec のバージョンによって異なります。 サポートされている Visual Studio バージョンのリストは、こちらから確認できます。 より優れた制御とツール オプションについては、Visual Studio 開発者 PowerShell (推奨)または 開発者コマンド プロンプト (レガシー)内から コマンドを実行することをお勧めします。詳細については、「 Visual Studio 開発者コマンド プロンプト 」および「 開発者 PowerShell 」を参照してください。 および コマンドラインから Microsoft C++ ツールセットを使用 Microsoft Visual Studio ドキュメント ページ |