このページでは、ソースコードから libbson ライブラリと libmongoc ライブラリをダウンロード、解凍、構成、構築する方法について詳しく説明します。
Tip
追加情報
アドバイス(このもののようなもの)には、チュートリアルを完了するために必要ではない追加情報と説明的な詳細が含まれていますが、特定のチュートリアル手順の意味を説明したいと考える上位ユーザーには役立つ場合があります。
次のページでは、いくつかの名前付き変数を使用して、$VERSION などの構成情報を表します。 チュートリアルを開始する前に、これらの変数の値を選択する必要があります。 チュートリアルの手順で参照されている変数が表示されたら、その場所で値を置き換えてください。
Tip
ライブラリをビルドする前に、サポートされているプラットフォームでを実行中いることを確認してください。サポートされているプラットフォームのリストについては、互換性ページを参照してください。
バージョンの選択
開始する前に、ダウンロードする mongo-c-driver のバージョンを確認してください。使用可能なバージョンのリストは、Githubリポジトリタグ ページ で確認できます。このチュートリアルでは、現在のドライバー バージョン v1.30.13 について説明します。
このページの残りの部分で、 $VERSIONは、このチュートリアル用にビルドするmongo-c-driverのバージョン番号を示します。
ソースの取得
次のいずれかの方法で mongo-c-driverソースコードを取得します。
gitを使用してリポジトリをクローンします(推奨)。 詳細については、「 Git を使用したダウンロード 」を参照してください。特定のバージョンのソース アーカイブをダウンロードします。詳細については、リリースアーカイブのダウンロード を参照してください。
重要
開発ブランチから構築するのではなく、安定版リリース バージョンのドライバーを使用することを強くお勧めします。 リポジトリのアーカイブをgit cloneまたはダウンロードする場合は、必ずリリース タグ(例: Git の--branch引数)を指定してください。
Git を使用したダウンロード
GitHub を使用して、GithubからCドライバーリポジトリをクローンできます。リリースバージョンの Git タグは、対応するバージョン(例:"1.30.13")。コマンドラインからリポジトリを複製するには、次のコマンドを使用します。
$ 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ファイルが含まれています。
前提条件の取得
libmongoc と libbson プロジェクトを構成するには、CSpec をインストールする必要があります。プラットフォームで利用可能な最新の安定バージョンの Cake をダウンロードすることを強くお勧めします。
オペレーティング システムに対応するタブを選択し、手順に従って CSpec をダウンロードします。
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 の構成
重要
If you are building with Xcode [1] or Visual Studio [2], you may need to execute CMake from within a special environment in which the respective toolchain is available.
名前$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 の場合、最適化されたバイナリは生成されますが、デバッグ情報は引き続き含まれます。The 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
ライブラリのバージョンの管理
MongoDB Cドライバーをソースから、またはパッケージマネージャーを使用してインストールすると、バージョン管理された名前とパスを使用するファイルがインストールされます。ドライバーをアップグレードするときにビルド構成を更新する必要がないようにするには、CSpec の find_package() コマンドなど、ビルド システムの標準の依存関係検出メカニズムを使用できます。ライブラリのファイル名やインストール パス全体をハードコーディングする代わりに、プラットフォームの共有ライブラリのシンボリック リンク規則を使用することもできます。
libmongoc による構成
If you followed the above steps starting from Configuring for libbson, your final result with only contain libbson and not the full C database driver library. Building of libmongoc is enabled/disabled using the ENABLE_MONGOC CMake variable. Re-run CMake again, but set ENABLE_MONGOC to TRUE:
$ cmake -D ENABLE_MONGOC=ON -B $BUILD -S $SOURCE
If the above command succeeds, then the project has been reconfigured to build with libmongoc. Follow the process at Building the Project and Installing the Built Results again to build and install libmongoc.
脚注
| [1] | Xcode でプロジェクトを構成してビルドする場合は、環境内で Xcode コマンドライン ツールをインストールし、使用できるようにする必要があります。 コマンドライン環境内から、次を実行します。 これにより、コンパイラーとリンクが |
| [2] | Microsoft Visual C++ を使用してプロジェクトを構成およびビルドする場合は、CMake またはビルドコマンドを実行する際に Visual C++ ツールと環境変数を設定する必要がある場合があります。 多くの場合、CMake は Visual Studio のインストールを検出し、実行時に環境を自動的に読み込みます。この自動検出は、CMake の より大きな制御とより多くのツーリングオプションを得るには、Visual Studio 開発者用PowerShell (推奨)または 開発者用コマンドプロンプト (レガシー)内からコマンドを実行することをお勧めします。 詳細については、Microsoft Visual Studio ドキュメントページの「Visual Studio 開発者コマンド プロンプトと開発者 PowerShell」および「コマンドラインから Microsoft C++ ツールセットを使用するを参照してください。 |