rapids_find_generate_module

在 v21.06.00 版本中添加。

为请求的包生成 Find*.cmake 模块

rapids_find_generate_module( <PackageName>
                HEADER_NAMES <paths...>
                [LIBRARY_NAMES <names...>]
                [INCLUDE_SUFFIXES <suffixes...>]
                [VERSION <version>]
                [NO_CONFIG]
                [INITIAL_CODE_BLOCK <code_block_variable>]
                [FINAL_CODE_BLOCK <code_block_variable>]
                [BUILD_EXPORT_SET <name>]
                [INSTALL_EXPORT_SET <name>]
                )

为请求的包生成自定义查找模块。这使得项目更容易查找没有现有 FindModule 或安装时未提供 CONFIG 模块的包。

注意

如果您将此用于作为您的 BUILD 或 INSTALL 导出集一部分的模块,则极有可能需要将其也包含在相同的导出集中。

HEADER_NAMES

应提供给 find_path() 以确定包的包含目录的头文件名。如果提供了名称列表,则只需找到其中一个即可将目录视为匹配项。

LIBRARY_NAMES

应提供给 find_library() 以确定包的包含目录的库名。如果提供了名称列表,则只需找到其中一个即可将目录视为匹配项。

注意

每个不以 lib 开头的条目也将以 lib<name> 进行搜索。

INCLUDE_SUFFIXES

在搜索 HEADER_NAMES 时使用的额外相对子目录。

VERSION

将根据 LIBRARY_NAMES 的内容为搜索的库附加额外的条目。

  • <name><version>

  • <name>.<version>

  • lib<name><version>

  • lib<name>.<version>

此顺序是为了明确遵循 CMake 搜索版本化库的建议。

“我们建议首先指定未版本化的名称,以便可以在发行版提供的包之前找到本地构建的包。”

NO_CONFIG

提供时,将阻止生成的 Find 模块首先搜索项目随附的 Find Config。

INITIAL_CODE_BLOCK

变量的可选值,该变量包含将在此配置文件第一步执行的代码字符串。

注意:这需要代码块变量而不是内容,以便我们可以正确插入 CMake 代码。

FINAL_CODE_BLOCK

变量的可选值,该变量包含将在配置文件最后一步执行的代码字符串。

注意:这需要代码块变量而不是内容,以便我们可以正确插入 CMake 代码。

BUILD_EXPORT_SET

记录此自定义 FindPackage 模块需要成为我们构建目录导出集的一部分。这意味着如果调用包需要再次搜索 <PackageName>,它将可以使用此模块。

INSTALL_EXPORT_SET

记录此自定义 FindPackage 模块需要成为我们安装导出集的一部分。这意味着它将作为我们包的 CMake 导出集基础架构的一部分进行安装。

结果变量

CMAKE_MODULE_PATH 将被修改为包含 Find<PackageName>.cmake 所在的文件夹。

关于如何正确使用 rapids_find_generate_module() 的示例

...

rapids_find_generate_module(
  RDKAFKA
  HEADER_NAMES rdkafkacpp.h
  LIBRARY_NAMES rdkafka++
  BUILD_EXPORT_SET consumer-exports
  INSTALL_EXPORT_SET consumer-exports
)
rapids_find_package(
  RDKAFKA REQUIRED
  BUILD_EXPORT_SET consumer-exports
  INSTALL_EXPORT_SET consumer-exports
)