文档菜单
文档首页
/ / /
C驱动器

从源代码构建C驱动器库

在本页

  • 选择版本
  • 获取源代码
  • 使用Git下载
  • 下载发布存档
  • 获取先决条件
  • 为libbson配置
  • 构建项目
  • 安装构建结果
  • 使用libmongoc配置
  • 脚注

本页详细说明了如何下载、解包、配置和构建libbsonlibmongoc 库从其源代码。

提示

额外信息

注意事项(如本例所示)包含额外信息和解释细节,这些信息不是完成教程所必需的,但对于好奇的读者和想要了解某些教程步骤含义的更高级用户可能有所帮助。

以下页面使用一些命名变量来表示配置信息,例如 $VERSION。在开始教程之前,您必须为这些变量选择值。当您在教程步骤中看到变量引用时,用您的值替换其位置。

提示

另请参阅

在构建库之前,请确保您正在运行受支持的平台。有关受支持平台的列表,请参阅兼容性页面上的平台兼容性

在开始之前,了解您将下载的 mongo-c-driver 版本。可在GitHub 仓库标签页面中找到可用的版本列表。本教程记录了当前驱动程序版本,v1.29.0。

在本页面的其余部分,$VERSION 将指您将为本教程构建的 mongo-c-driver 的版本号。

以下方式之一获取 mongo-c-driver 的源代码

  • 使用 git 克隆仓库(推荐)。更多信息,请参阅使用 Git 下载。

  • 下载特定版本的源代码归档。更多信息,请参阅下载发布归档。

重要

强烈建议新用户使用驱动程序的一个稳定发布版本,而不是从开发分支构建。当您使用 git clone 或下载仓库的归档时,请确保指定一个发布标签(例如,使用 Git 的 --branch 参数)。

您可以使用Git从GitHub克隆C驱动程序仓库。已发布版本的Git标签以对应版本命名(例如,“1.29.0”)。要从命令行克隆仓库,请使用以下命令

$ git clone https://github.com/mongodb/mongo-c-driver.git --branch="$VERSION" "$SOURCE"

提示

尽管它的名字是“分支”,但您可以使用git-clone命令的--branch选项从仓库标签克隆。

您可以从仓库的Releases页面获取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 目录包含一个名为 mongo-c-driver-$VERSION 的二级目录,这是驱动程序源树的根目录。本文档将此目录称为 $SOURCE。该 $SOURCE 目录包含顶层 CMakeLists.txt 文件。

您必须安装 CMake 以配置 libmongoclibbson 项目。我们强烈建议您下载适用于您平台的最新的稳定版CMake。

选择与您的操作系统相对应的选项卡,并按照说明下载CMake

  1. 访问 CMake 下载页面。

  2. 下载 CMake 的 .msi.dmg 文件,并使用它来安装 CMake。

  1. 访问 CMake 下载页面

  2. 下载以 .sh 结尾的自解压 shell 脚本。

  3. 使用 sh 工具执行脚本,并传递适当的参数以执行安装。例如,在 x86_64 平台上使用 CMake 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 环境变量中可用,并可以从 shell 中执行 "cmake"。您可以通过从命令行请求 CMake 的 --version 来测试此功能,如下所示

cmake --version
cmake version 3.21.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).

注意

如果您只想构建 libbson,则 CMake 就足够用于构建。额外的 C 驱动器功能可能需要安装额外的外部依赖项,但在此我们不关心它们。

重要

如果您使用Xcode [1] 或 Visual Studio [2] 进行构建,可能需要在具有相应工具链的特殊环境中执行CMake。

让名称 $BUILD 表示路径 $SOURCE/_build。这将是我们由CMake写入构建文件的目录。

mongo-c-driver 的源目录为 $SOURCE,构建目录为 $BUILD 的情况下,可以从命令行执行以下命令以配置项目,包括 libbsonlibmongoc

$ 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

如果配置失败并出现错误,请参考CMake输出中的错误消息和信息。在继续之前,请确保配置成功。

提示

这些CMake参数代表什么意思?

BUILD_VERSION 设置将包含在构建结果中的版本号。这应设置为与在获取源代码。中下载的源驱动程序版本相同的值。

ENABLE_EXTRA_ALIGNMENTENABLE_AUTOMATIC_INIT_AND_CLEANUPmongo-c-driver 的一部分,并且对应于仅为了ABI兼容性而默认启用的已弃用功能。强烈建议在可能的情况下禁用这些功能。

ENABLE_MONGOC=OFF 参数禁用了 libmongoc 的构建。我们将在下一节中构建它。

CMAKE_BUILD_TYPE 设置告诉 CMake 将生成哪种代码变体。在 RelWithDebInfo 的情况下,将生成优化后的二进制文件,但仍包含调试信息。对于CMAKE_BUILD_TYPE 对多配置生成器(例如 Visual Studio)没有影响,生成器在构建/安装时依赖于 --config 选项。

在成功配置项目后,可以使用 CMake 执行构建。

$ cmake --build $BUILD --config RelWithDebInfo --parallel

如果配置正确并且所有依赖项都已满足,则上述命令应继续编译和链接配置的组件。如果上述命令失败,则可能存在环境错误,或者您正在使用不受支持/未测试的平台。请参考构建工具输出以获取更多信息。

提示

–config 选项

在多配置生成器(例如 Visual Studio)的情况下,使用 –config 选项来设置要使用的构建配置。它对其他生成器没有影响,其他生成器使用 CMAKE_BUILD_TYPE

$PREFIX 为路径 $SOURCE/_install。我们可以使用 CMake 安装构建结果

$ cmake --install "$BUILD" --prefix "$PREFIX" --config RelWithDebInfo

此命令将安装 mongo-c-driver 构建结果到 $PREFIX 目录。

提示

–config 选项

选项 --config 仅用于多配置生成器(例如 Visual Studio),否则将被忽略。为 --config 提供的值必须与 cmake --build 中的 --config 提供的值相同。

如果您从 为 libbson 配置 开始按照上述步骤操作,最终结果将只包含 libbson 而不是完整的 C 数据库驱动库。使用 CMake 变量 ENABLE_MONGOC 来启用/禁用 libmongoc 的构建。重新运行 CMake,但将 ENABLE_MONGOC 设置为 TRUE

$ cmake -D ENABLE_MONGOC=ON $BUILD

如果上述命令成功执行,则项目已被重新配置以使用 libmongoc 进行构建。按照 构建项目安装构建结果 中的过程再次执行,以构建和安装 libmongoc

[1] 如果您希望使用 Xcode 配置和构建项目,则需要安装 Xcode 命令行工具并将其添加到环境变量中。在命令行环境中运行
$ xcode-select --install
这将确保编译器和链接器可在您的 $PATH 中使用。
[2] 如果您希望使用 Microsoft Visual C++ 配置和构建项目,则在运行任何 CMake 或构建命令时可能需要设置 Visual C++ 工具和环境变量。在许多情况下,CMake会在执行时自动检测Visual Studio的安装并加载其环境。这种自动检测可以通过CMake的-G-T-A选项来控制。其中-G选项最为重要,因为它选择使用哪个版本的Visual Studio。支持的Visual Studio版本取决于您已安装的CMake版本。有关支持的Visual Studio版本列表,请参阅[此处](https://cmake.com.cn/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators)。为了获得更好的控制和更多的工具选项,建议在Visual Studio的开发者PowerShell(推荐)或开发者命令提示符(旧版)中运行命令。

上一页

使用聚合转换数据