FindOpenACC

3.10 版本新增。

查找并检测编译器中的 OpenACC 支持

find_package(OpenACC [<version>] [...])

如果编译器支持 OpenACC,则将在不同语言的变量中返回编译 OpenACC 所需的标志。目前,仅支持 NVHPC、PGI、GNU 和 Cray 编译器。

导入的目标

此模块提供以下 导入目标

OpenACC::OpenACC_<lang>

3.16 版新增。

封装了使用 <lang> 中 OpenACC 所需的用法的目标。仅当找到 OpenACC 支持时,此目标才可用。<lang> 是 C、CXX 或 Fortran 之一。

结果变量

此模块定义了以下变量

OpenACC_FOUND

在 3.25 版本中新增。

布尔值,指示已找到至少一种语言的 OpenACC 标志。

该模块将为项目中的每种语言设置以下变量,其中 <lang> 是 C、CXX 或 Fortran 之一。

OpenACC_<lang>_FOUND

布尔值,指示是否检测到语言 <lang> 的 OpenACC 支持。

OpenACC_<lang>_FLAGS

用于 <lang> 的 OpenACC 编译器标志,用空格分隔。

OpenACC_<lang>_OPTIONS

3.16 版新增。

用于 <lang> 的 OpenACC 编译器标志,作为列表。适用于与 target_compile_options 或 target_link_options 一起使用。

该模块还将尝试提供 OpenACC 版本变量

OpenACC_<lang>_SPEC_DATE

<lang> 编译器实现的 OpenACC 规范的日期。

OpenACC_<lang>_VERSION_MAJOR

<lang> 编译器实现的 OpenACC 的主版本。

OpenACC_<lang>_VERSION_MINOR

<lang> 编译器实现的 OpenACC 的次版本。

OpenACC_<lang>_VERSION

<lang> 编译器实现的 OpenACC 版本。

规范日期格式为 OpenACC 标准中给出的格式:yyyymm,其中 yyyymm 分别表示 <lang> 编译器实现的 OpenACC 规范的年份和月份。

输入变量

此模块接受以下变量

OpenACC_ACCEL_TARGET=<target>

如果设置,将与 OpenACC_<lang>_FLAGS 变量一起返回正确的 <target> 加速器标志集。

示例

查找 OpenACC 支持并将导入的目标链接到项目目标

find_package(OpenACC)
target_link_libraries(example PRIVATE OpenACC::OpenACC_C)