如何:从源安装 libbson/libmongoc
重要
本页面假设您可以成功配置和构建要安装的组件, 从源代码构建 C 驱动程序库教程页面对此进行了详细说明和解释。虽然该教程逐步介绍了如何构建源代码和进行最小化安装,但本页面将提供更深入的指导,说明从此类源代码构建安装 mongo-c-driver
库的细微差别和可用选项。
mongo-c-driver
使用 CMake 生成安装规则,并安装各种感兴趣的工件。为了与下游程序集成, 配置文件会将 和 pkg-config 文件会特别令人感兴趣。
如果您打算通过 CMake 或 pkg-config 导入libbson
或libmongoc
,了解相应工具如何搜索包元数据会很有帮助。
CMake 根据一组前缀构建一组搜索路径,这些前缀会从环境和配置时 CMake 设置中读取。
特别是, $PATH
环境变量将用于构建系统的标准前缀。对于 $PATH
中的每个目录D
:
如果
D
的最后一个路径组件是“bin
”或“sbin
”,则D
将替换为D
的父路径。D
添加为Atlas Search前缀。
这会导致 $PATH
上的常见 Unix 特定目录(例如 /usr/bin
和 /usr/local/bin
)最终将分别导致 CMake 以 /usr
和 /usr/local
为前缀进行Atlas Search 。 如果 $PATH
上有 $HOME/.local/bin
目录,则 $HOME/.local
目录也会添加到Atlas Search路径中。 对于许多 Unix Shell 来说,在 {9 $HOME/.local/bin
上使用$PATH
是一种越来越常见的模式,如果您打算在安装中使用“使用非特权用户本地安装前缀(推荐) ”,则建议使用这种模式。
此外, CMAKE_PREFIX_PATH
环境变量将用于构造路径列表。默认情况下,未定义此环境变量。
在 Windows上,目录%ProgramW6432%
、 %ProgramFiles%
、 %ProgramFiles(x86)%
、 %SystemDrive%\\Program Files
和%SystemDrive%\\Program Files (x86)
也将被添加。 (这些来自CMAKE_SYSTEM_PREFIX_PATH
CMake 变量,该变量是在 CMake 平台检测期间定义的。)
pkg-config
命令行工具默认在各个目录中查找.pc
文件,这些目录相对于pkg-config
工具本身的路径。要获取pkg-config
默认搜索的目录列表,请使用以下命令:
$ pkg-config "pkg-config" --variable="pc_path"
可以使用$PKG_CONFIG_PATH
环境变量指定其他目录。将在默认pkg-config
路径之前搜索此类路径。
在 Windows 上,注册表项HKCU\Software\pkgconfig\PKG_CONFIG_PATH
和HKLM\Software\pkgconfig\PKG_CONFIG_PATH
可用于为pkg-config
指定其他搜索目录。建议将目录添加到HKCU\…
键,以保留特定于用户的搜索目录。
提示
另请参阅:
man
pkg-config
如果您的系统上安装了 和 ,则man 1 pkg-config
中详细介绍了查找过程。您还可以在网络上的许多手册页存档中找到此文档,例如 linux.die.net 上的 pkg-config。
选择前缀
我们将用户本地安装的目录称为$PREFIX
。此目录的路径选择有些随意,但有一些建议值得考虑。 $PREFIX
目录是您在配置下游项目时为 CMake 或pkg-config
提供的路径。
使用非特权用户本地安装前缀(推荐)
建议您在用户帐户特定的非特权文件系统位置安装自定义的mongo-c-driver
库。
与其他类 Unix 系统不同,macOS 没有用于用户本地包安装的特定目录,可以由个人自行创建此类目录。
要使用的目录的选择本质上是任意的。对于每用户安装,唯一的要求是希望执行和使用安装的用户可以写入该目录。
为了与其他 Unix 变体保持一致,本指南建议使用$HOME/.local
作为用户本地安装前缀。这基于 XDG 基本目录 指定的行为 规范和 systemd 文件层次结构 在 Linux 和各种 BSD 上很常见,但它不是其他平台上的标准。
在 Linux 和 BSD 系统上,通常使用$HOME/.local
目录作为用户特定软件包安装的前缀。此约定源自 XDG 基本目录 规范和 systemd 文件层次结构
由于其广泛使用并得到许多其他工具的支持,本指南建议使用$HOME/.local
作为用户本地安装前缀。
在 Windows 上, %UserProfile%\\AppData\\Local
中有一个专门用于存放用户本地文件的目录。要引用它,请展开%LocalAppData%
环境变量。 (请勿使用%AppData%
环境变量!)
尽管该目录存在,但它没有适合我们目的的规定结构。用户本地安装前缀的选择是任意的。本指南强烈建议不要直接在用户的主目录中创建其他文件和目录。
考虑使用%LocalAppData%\\MongoDB
作为手动安装组件的前缀。
选择系统范围的安装前缀
如果您希望将mongo-c-driver
库安装在所有用户都可见的目录中,有一些标准选项。
使用安装$PREFIX
的/usr/local/
是对所有 Unix 平台的主要建议,但这在某些不知名的系统上可能会有所不同。
警告
请勿使用/usr/
或/
(根目录)作为前缀:这些目录旨在由系统精心管理。 /usr/local
目录是特意保留用于非托管软件安装的。
或者,考虑安装到可以轻松删除或重新定位的不同目录,例如/opt/mongo-c-driver/
。这很容易识别,并且在没有明确选择的情况下不会与系统上的其他软件交互。
警告
强烈建议不要在 Windows 系统范围内手动安装软件。最好使用每用户非特权安装前缀。
如果希望在 Windows 上执行系统范围的安装,最好使用%ProgramData%
的命名子目录,因为该子目录不需要管理权限即可读写。 (例如%ProgramData%\\mongo-c-driver
)
使用 CMake 安装
成功配置和构建库并选择合适的$PREFIX
后,您可以安装构建的结果。 令名称$BUILD
指代您执行构建的目录(这是包含CMakeCache.txt
以及许多其他文件的目录)。
在命令行中,可以使用cmake --install subcommand
选项通过 CMake 运行对所选$PREFIX
的安装:
$ cmake --install "$BUILD" --prefix "$PREFIX"
重要
如果您在使用多配置生成器(例如 Visual Studio、Xcode)时配置了库,则还需要传递--config
命令行选项,并且必须传递要安装的构建配置的值。对于用于安装的任何选定的--config
值,您之前还必须使用相同的--config
值在该目录中执行过cmake --build
。
注意
如果您选择使用系统范围的安装$PREFIX
,则您可能需要以特权用户身份执行安装。如果无法或不想以特权用户身份运行安装,则应使用每用户安装前缀。
提示
CMAKE_INSTALL_PREFIX
如果将--prefix
命令行选项与 一起使用,则无需设置cmake --install
。--prefix
选项将覆盖配置项目时由CMAKE_INSTALL_PREFIX
指定的所有内容。