rapids_cpm_spdlog

在版本 v21.10.00 中添加。

允许项目通过 CPM 查找或构建 spdlog,并内置跟踪这些依赖项以支持正确的导出。

使用版本文件 中指定的 spdlog 版本,以确保所有 RAPIDS 项目的一致性。

rapids_cpm_spdlog( [FMT_OPTION <fmt-option-name>]
                   [BUILD_EXPORT_SET <export-name>]
                   [INSTALL_EXPORT_SET <export-name>]
                   [<CPM_ARGS> ...])

FMT_OPTION .. 版本新增:: v23.04.00

Spdlog 依赖于 fmt 库,并在构建 spdlog 时提供多种处理此依赖项的方式。此选项仅控制在获取和构建 spdlog 时的行为,不控制在系统上找到已安装的 spdlog 时的行为。

此选项可设置为:BUNDLEDEXTERNAL_FMTEXTERNAL_FMT_HOSTD_FORMAT。如果设置为 BUNDLED,则 spdlog 将使用其自带的 fmt 版本。如果设置为 EXTERNAL_FMT,则 spdlog 将使用 fmt::fmt 目标并链接到 fmt 库。如果设置为 EXTERNAL_FMT_HO,则 spdlog 将使用 fmt::fmt-header-only 目标并链接到仅头文件的 fmt 库。如果设置为 STD_FORMAT,则 spdlog 将使用 std::format 而非 fmt 库。

默认为 EXTERNAL_FMT_HO

BUILD_EXPORT_SET

记录我们的构建目录导出集中需要为 spdlog 执行 CPMFindPackage()

INSTALL_EXPORT_SET

记录我们的安装目录导出集中需要为 spdlog 执行 find_dependency()

注意

如果提供了 INSTALL_EXPORT_SET,并且通过 CPM 的 add_subdirectory 将 spdlog 添加到项目中,则会安装 spdlog。

CPM_ARGS

CPM_ARGS 后的任何参数都将转发到底层的 spdlog CPMFindPackage()` 调用。

结果目标

将创建 spdlog::spdlogspdlog::spdlog_header_only 目标

结果变量

spdlog_SOURCE_DIR 设置为 spdlog 的源目录路径。spdlog_BINARY_DIR 设置为 spdlog 的构建目录路径。spdlog_ADDED 如果 spdlog 之前未添加过,则设置为真值。spdlog_VERSION 设置为 versions.json 中指定的 spdlog 版本。spdlog_fmt_target 设置为所使用的 fmt 目标(如果使用了的话)