AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

高度な構成とインストールのオプション

BSON C++ ライブラリや C++ ドライバーを作成して他のコンポーネントに埋め込み、標準ビルドまたはディストリビューション パッケージ マネージャーからインストールされたコンポーネントとの競合の可能性を避けたい場合は、次を使用できます: BSONCXX_OUTPUT_BASENAMEMONGOCXX_OUTPUT_BASENAMEオプションをcmake

cmake .. \
-DBSONCXX_OUTPUT_BASENAME=custom_bsoncxx \
-DMONGOCXX_OUTPUT_BASENAME=custom_mongocxx

上記のコマンドでは、 libcustom_bsoncxx.solibcustom_mongocxx.soという名前のライブラリ(またはビルド プラットフォームに適した拡張機能)が生成されます。 これらのライブラリは標準のシステム ディレクトリまたは代替の場所に配置でき、リンクのコマンドラインで-lcustom_mongocxx -lcustom_bsoncxxなどを指定することで にリンクできます(特定のフラグをリンクカーに必要なものに調整できる場合があります)。

C++ドライバーをインストールするには、次のパッケージマネージャーを使用できます。

Vcpkg がまだインストールされていない場合は、次のコマンドを使用してインストールします。

$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh

オプションで、Visual Studio 統合を使用して をインストールするには、次の手順に従います。

vcpkg integrate install

ドライバーをインストールします。 最新バージョンのドライバーを取得するには、 git pullが必要になる場合があります。

$ ./vcpkg install mongo-cxx-driver

ツールチェーン ファイルvcpkg.cmakeを使用して、CSpec に開発ファイルを見つける場所をたとえば次のように指示できます。

-DCMAKE_TOOLCHAIN_FILE=/<path to vcpkg repo>/vcpkg/scripts/buildsystems/vcpkg.cmake

ヘッダー ファイルは次の場所にあります。

vcpkg/installed/<CPU ARCHITECTURE>-<OPERATING SYSTEM>/include/

ライブラリのファイルは次の場所にあります。

vcpkg/installed/<CPU ARCHITECTURE>-<OPERATING SYSTEM>/lib/

パッケージ指定子: mongo-cxx-driver/3.8.0

接続をまだインストールしていない場合は、インストールして接続コマンドを実行します。

$ pip install conan
$ conan profile detect --force

以下をconanfile.txtに追加します。

[requires]
mongo-cxx-driver/3.8.0
[generators]
CMakeDeps
CMakeToolchain

Console 経由でドライバーをインストールし、プロジェクトをビルドします。

$ conan install conanfile.txt --output-folder=build --build=missing
$ cmake \
-B build \
-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release
$ cmake --build build

MacOS ユーザーは Homebrew を使用して、次のコマンドを実行中してC++ドライバーをインストールできます。

brew install mongo-cxx-driver

ヘッダーは次の場所にあります。

/opt/homebrew/include/mongocxx/v_noabi/
/opt/homebrew/include/bsoncxx/v_noabi/

ライブラリ ファイルは次の場所にあります。

/opt/homebrew/lib/

ヘッダーは次の場所にあります。

/usr/local/include/mongocxx/v_noabi/
/usr/local/include/bsoncxx/v_noabi/

ライブラリ ファイルは次の場所にあります。

/usr/local/lib/

mongocx ドライバーはMongoDB C ドライバー上に構築されます。

mongocxx-3.9.0 のビルドするCドライバーが検出されない場合は、Cドライバーを自動的にダウンロードし、インストールしますCドライバーの既存のインストールを使用するには、Cドライバーがインストールされたディレクトリに CMAKE_PREFIX_PATH を設定します。C++ドライバーの各バージョンに最小限必要な libmongoc バージョンについて詳しくは、互換性 を参照してください。

パッケージマネージャーが十分に最新のバージョンを提供していることがわかっていない限り、ソースコードをダウンロードしてビルドする 必要があります。Cドライバー リリース ページから tarball を取得します。

libmongoc のインストール で、tarball からビルドする手順に従ってください。

業界のベストプラクティスと一部の規制では、TLS 1.1以上の使用が必要です。 MongoDB C ドライバーは、OpenSSL が少なくともバージョン1.0.1の場合、Linux で TLS 1.1をサポートします。 macOS および Windows では、C ドライバーは TLS 1.1をサポートするネイティブ TLS 実装を使用します。

次のサブセクションでは、C++ ドライバーやその依存関係を、一般的な共有ライブラリではなく静的ライブラリとして構成するための詳細オプションについて詳しく説明します。 これらのオプションを指定すると、動作の異なるライブラリ アーティファクトが生成されます。 これらのオプションを利用する前に、さまざまなリンクに関するアプローチの影響を完全に理解していることを確認してください。

ユーザーは、 mongocxxを静的ライブラリとして構築するオプションがあります。 これは初めてユーザーには推奨されません。 ユーザーは-DBUILD_SHARED_LIBSオプションを使用してこの動作を有効にできます。

cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF

ユーザーは、 mongocxxを静的ライブラリと共有ライブラリの両方として構築するオプションがあります。 ユーザーは-DBUILD_SHARED_AND_STATIC_LIBSオプションを使用してこの動作を有効にできます。

cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_AND_STATIC_LIBS=ON

ユーザーは、静的にリンクされたlibmongocを持つ共有ライブラリとしてmongocxxを構築するオプションがあります。 これは初めてユーザーには推奨されません。 ユーザーは-DBUILD_SHARED_LIBS_WITH_STATIC_MONGOCオプションを使用してこの動作を有効にできます。

cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS_WITH_STATIC_MONGOC=ON

テスト ターゲットの構成を無効にするには、cmake オプションとして-DENABLE_TESTS=OFFを渡します。

cmake .. -DENABLE_TESTS=OFF
cmake --build .. --target help
# No test targets are configured.

C++ ドライバーを非標準のディレクトリにインストールするには、目的のインストール パスにCMAKE_INSTALL_PREFIXを指定します。

cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$HOME/mongo-cxx-driver

インストールのlibディレクトリに-DCMAKE_INSTALL_RPATH=オプションを指定することも検討してください。 これにより、libmongocx.son が libbsoncx.so を見つけられるようになります。

cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$HOME/mongo-cxx-driver \
-DCMAKE_INSTALL_RPATH=$HOME/mongo-cxx-driver/lib

C ドライバーが非標準のディレクトリにインストールされている場合は、C ドライバーのインストール パスにCMAKE_PREFIX_PATHを指定します。

cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=$HOME/mongo-c-driver \
-DCMAKE_INSTALL_PREFIX=$HOME/mongo-cxx-driver

注意

CMax PATH 変数に複数のパスが必要な場合は、次のようにセミコロンで区切ります。 -DCMAKE_PREFIX_PATH="/your/cdriver/prefix;/some/other/path"

-DCMAKE_PREFIX_PATHオプションの代わりに、 -DLIBMONGOC_DIR-DLIBBSON_DIRオプションを使用してlibmongocインストール ディレクトリを指定する必要があります。

cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DLIBMONGOC_DIR=$HOME/mongo-c-driver \
-DLIBBSON_DIR=$HOME/mongo-c-driver \
-DCMAKE_INSTALL_PREFIX=$HOME/mongo-cxx-driver

非標準のディレクトリ インストールにリンクしているアプリケーションでは、実行時に C++ ドライバーをロードする際にエラーが発生する可能性があります。 例:

# Tell pkg-config where to find C++ driver installation.
export PKG_CONFIG_PATH=$HOME/mongo-cxx-driver/lib/pkgconfig
clang++ app.cpp -std=c++11 $(pkg-config --cflags --libs libmongocxx) -o ./app.out
./app.out
# Prints the following error:
# dyld[3217]: Library not loaded: '@rpath/libmongocxx._noabi.dylib'
# Referenced from: '/Users/kevin.albertson/code/app.out'
# Reason: tried: '/usr/local/lib/libmongocxx._noabi.dylib' (no such file), '/usr/lib/libmongocxx._noabi.dylib' (no such file)
# zsh: abort ./app.out

macOS 上の C++ ドライバーのデフォルトのinstall nameには@rpathが含まれます。

otool -D $HOME/mongo-cxx-driver/lib/libmongocxx.dylib
# Prints:
# /Users/kevin.albertson/mongo-cxx-driver/lib/libmongocxx.dylib:
# @rpath/libmongocxx._noabi.dylib

インストール名に@rpathを含めると、リンク中のアプリケーションがライブラリの検索パスのリストを制御できるようになります。

app.out には、 @rpath/libmongocxx._noabi.dylibの ロード コマンドが含まれています。 app.outには@rpathを置き換えるエントリがありません。

macOS でこれを解決するために、次の方法が検討されています。

C++ ドライバー ライブラリを含むディレクトリにDYLD_FALLBACK_LIBRARY_PATHを渡します。

DYLD_FALLBACK_LIBRARY_PATH=$HOME/mongo-cxx-driver/lib ./app.out
# Prints "successfully connected with C++ driver"

あるいは、リンク オプション-Wl,-rpathを渡して、 @rpathを置き換えるエントリを追加することもできます。

# Tell pkg-config where to find C++ driver installation.
export PKG_CONFIG_PATH=$HOME/mongo-cxx-driver/lib/pkgconfig
# Pass the linker option -rpath to set an rpath in the final executable.
clang++ app.cpp -std=c++11 -Wl,-rpath,$HOME/mongo-cxx-driver/lib $(pkg-config --cflags --libs libmongocxx) -o ./app.out
./app.out
# Prints "successfully connected with C++ driver"

If building the application with cmake, the Default RPATH settings include the full RPATH to all used libraries in the build tree. However, when installing, cmake will clear the RPATH of these targets so they are installed with an empty RPATH. This may result in a Library not loaded error after install.

例:

# Build application ``app`` using the C++ driver from a non-standard install.
cmake \
-DCMAKE_PREFIX_PATH=$HOME/mongo-cxx-driver \
-DCMAKE_INSTALL_PREFIX=$HOME/app \
-DCMAKE_CXX_STANDARD=11 \
-Bcmake-build -S.
cmake --build cmake-build --target app.out
# Running app.out from build tree includes rpath to C++ driver.
./cmake-build ./cmake-build/app.out
# Prints: "successfully connected with C++ driver"
cmake --build cmake-build --target install
# Running app.out from install tree does not include rpath to C++ driver.
$HOME/app/bin/app.out
# Prints "Library not loaded" error.

実行可能ファイルの R パスがインストール ターゲットに保持されるように、 -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUEを設定することを検討してください。

# Build application ``app`` using the C++ driver from a non-standard install.
# Use CMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE to keep rpath entry on installed app.
cmake \
-DCMAKE_PREFIX_PATH=$HOME/mongo-cxx-driver \
-DCMAKE_INSTALL_PREFIX=$HOME/app \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE \
-DCMAKE_CXX_STANDARD=11 \
-Bcmake-build -S.
cmake --build cmake-build --target install
$HOME/app/bin/app.out
# Prints "successfully connected with C++ driver"

詳細については、RBATH 処理 に関するcmake のドキュメントを参照してください。

非標準のディレクトリ インストールにリンクしているアプリケーションでは、実行時に C++ ドライバーをロードする際にエラーが発生する可能性があります。 例:

# Tell pkg-config where to find C++ driver installation.
export PKG_CONFIG_PATH=$HOME/mongo-cxx-driver/lib/pkgconfig
g++ -std=c++11 app.cpp $(pkg-config --cflags --libs libmongocxx) -o ./app.out
./app.out
# Prints the following error:
# ./app.out: error while loading shared libraries: libmongocxx.so._noabi: cannot open shared object file: No such file or directory

Linux でこれを解決する方法がいくつかあります。

C++ ドライバー ライブラリを含むディレクトリにLD_LIBRARY_PATHを渡します。

LD_LIBRARY_PATH=$HOME/mongo-cxx-driver/lib ./app.out
# Prints "successfully connected with C++ driver"

あるいは、リンク オプション-Wl,-rpathを渡してrpathエントリを追加することもできます。

# Tell pkg-config where to find C++ driver installation.
export PKG_CONFIG_PATH=$HOME/mongo-cxx-driver/lib/pkgconfig
# Pass the linker option -rpath to set an rpath in the final executable.
g++ app.cpp -std=c++11 -Wl,-rpath,$HOME/mongo-cxx-driver/lib $(pkg-config --cflags --libs libmongocxx) -o ./app.out
./app.out
# Prints "successfully connected with C++ driver"

If building the application with cmake, the Default RPATH settings include the full RPATH to all used libraries in the build tree. However, when installing, cmake will clear the RPATH of these targets so they are installed with an empty RPATH. This may result in a Library not loaded error after install.

例:

# Build application ``app`` using the C++ driver from a non-standard install.
cmake \
-DCMAKE_PREFIX_PATH=$HOME/mongo-cxx-driver \
-DCMAKE_INSTALL_PREFIX=$HOME/app \
-DCMAKE_CXX_STANDARD=11 \
-Bcmake-build -S.
cmake --build cmake-build --target app.out
# Running app.out from build tree includes rpath to C++ driver.
./cmake-build ./cmake-build/app.out
# Prints: "successfully connected with C++ driver"
cmake --build cmake-build --target install
# Running app.out from install tree does not include rpath to C++ driver.
$HOME/app/bin/app.out
# Prints "cannot open shared object file" error.

実行可能ファイルの R パスがインストール ターゲットに保持されるように、 -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUEを設定することを検討してください。

# Build application ``app`` using the C++ driver from a non-standard install.
# Use CMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE to keep rpath entry on installed app.
cmake \
-DCMAKE_PREFIX_PATH=$HOME/mongo-cxx-driver \
-DCMAKE_INSTALL_PREFIX=$HOME/app \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE \
-DCMAKE_CXX_STANDARD=11 \
-Bcmake-build -S.
cmake --build cmake-build --target install
$HOME/app/bin/app.out
# Prints "successfully connected with C++ driver"

詳細については、RBATH 処理 に関するcmake のドキュメントを参照してください。