このページでは、ソースコードから libbson
ライブラリと libmongoc
ライブラリをダウンロード、解凍、構成、構築する方法について詳しく説明します。
Tip
追加情報
アドバイス(このもののようなもの)には、チュートリアルを完了するために必要ではない追加情報と説明的な詳細が含まれていますが、特定のチュートリアル手順の意味を説明したいと考える上位ユーザーには役立つ場合があります。
次のページでは、いくつかの名前付き変数を使用して、$VERSION
などの構成情報を表します。 チュートリアルを開始する前に、これらの変数の値を選択する必要があります。 チュートリアルの手順で参照されている変数が表示されたら、その場所で値を置き換えてください。
Tip
ライブラリをビルドする前に、サポートされているプラットフォームでを実行中いることを確認してください。 サポートされているプラットフォームのリストについては、 互換性 ページの プラットフォームの互換性 を参照してください。
バージョンの選択
開始する前に、ダウンロードするmongo-c-driver
のバージョンを確認してください。使用可能なバージョンのリストは、 GitHubリポジトリタグ ページ で確認できます。このチュートリアルでは、現在のドライバー バージョン v.. について説明します。1291
このページの残りの部分で、 $VERSION
は、このチュートリアル用にビルドするmongo-c-driver
のバージョン番号を示します。
ソースの取得
次のいずれかの方法で mongo-c-driver
ソースコードを取得します。
git
を使用してリポジトリをクローンします(推奨)。 詳細については、「 Git を使用したダウンロード 」を参照してください。特定のバージョンのソース アーカイブをダウンロードします。 詳細については、「 リリースアーカイブのダウンロード 」を参照してください。
重要
開発ブランチから構築するのではなく、安定版リリース バージョンのドライバーを使用することを強くお勧めします。 リポジトリのアーカイブをgit clone
またはダウンロードする場合は、必ずリリース タグ(例: Git の--branch
引数)を指定してください。
Git を使用したダウンロード
GitHub からCドライバーリポジトリを複製するには Git を使用します。リリースされたバージョンの Git タグは、対応するバージョンにちなんで命名されます(例: "..1 291)。コマンドラインからリポジトリを複製するには、次のコマンドを使用します。
$ git clone https://github.com/mongodb/mongo-c-driver.git --branch="$VERSION" "$SOURCE"
Tip
名前に関係なく、git-clone
コマンドの --branch
オプションを使用して、リポジトリタグから複製できます。
リリース アーカイブのダウンロード
Cドライバーリポジトリのアーカイブ スナップショットは、リポジトリの リリース ページから取得できます。すべてのリリースには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"
上記のコマンドでは、それを実行したディレクトリ内に mongo-c-driver-$VERSION
ディレクトリが作成されます。これはドライバー ソース ツリーのルートです。 このドキュメントでは、このディレクトリを $SOURCE
として参照します。 $SOURCE
ディレクトリには最上位の CMakeLists.txt
ファイルが含まれています。
## 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"
上記のコマンドでは、それを実行したディレクトリ内に mongo-c-driver-$VERSION
ディレクトリが作成されます。これはドライバー ソース ツリーのルートです。 このドキュメントでは、このディレクトリを $SOURCE
として参照します。 $SOURCE
ディレクトリには最上位の CMakeLists.txt
ファイルが含まれています。
## 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
上記のコマンドでは、コマンドを実行したディレクトリ内に mongo-c-driver-$VERSION
ディレクトリが作成されます。 mongo-c-driver-$VERSION
ディレクトリには2 つ目の mongo-c-driver-$VERSION
ディレクトリが含まれています。これはドライバー ソース ツリーのルートです。 このドキュメントでは、このディレクトリを $SOURCE
として参照しています。 $SOURCE
ディレクトリには最上位の CMakeLists.txt
ファイルが含まれています。
前提条件の取得
と プロジェクトを構成するには、CSpeclibmongoc
libbson
をインストールする必要があります。プラットフォームで利用可能な最新の安定バージョンの Cake をダウンロードすることを強くお勧めします。
オペレーティング システムに対応するタブを選択し、手順に従って CSpec をダウンロードします。
CMax
.msi
または.dmg
ファイルをダウンロードし、そのファイルを使用して Cake をインストールします。
CSpec ダウンロード ページ にアクセスします
自己抽出型シェルスクリプトをダウンロードします。これは
.sh
で終了します。sh
ユーティリティを使用し、インストールを実行するための適切な引数を渡してスクリプトを実行します。 例、x86_64
プラットフォーム上の CSpec 3.27.0 で次のコマンドを実行します。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
環境変数のコマンドとして使用でき、 シェルから "cmake
" として実行できることを前提としています。 次のコードに示すように、コマンドラインから CMax に --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
とともに指定された値と同じである必要があります。
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] | プロジェクト、環境自体が実行される場合この自動検出は、CMax の-G 、 、 オプションで制御できます。-T -A -G オプションは、使用される Visual Studio バージョンを選択するため、最も重要です。サポートされている Visual Studio のバージョンは、インストールされている CSpec のバージョンによって異なります。サポートされている Visual Studio バージョンのリストは、こちらから確認できます。より優れた制御とツール オプションを使用するには、Visual Studio 開発者 PowerShell(推奨)または開発者コマンド プロンプト(レガシー)内から コマンドを実行することをお勧めします。詳細については、「 Visual Studio 開発者コマンド プロンプト 」および「 開発者 PowerShell と の使用 」を参照してください。 Microsoft Visual Studio ドキュメント ページのコマンドラインからMicrosoft C++ツールセットを実行します。 |