FindHDF5¶
查找分层数据格式 (HDF5),一个用于读取和写入自描述数组数据的库。
此模块调用应与 HDF5
一起安装的 HDF5
包装器编译器。根据 HDF5
配置,包装器编译器被称为 h5cc
或 h5pcc
。如果成功,该模块将使用 show 参数调用编译器,以查看编译 HDF5
客户端应用程序时使用的标志。
该模块可以选择接受 COMPONENTS
参数。如果未指定 COMPONENTS
,则查找模块将默认仅查找 HDF5
C 库。如果指定了一个或多个 COMPONENTS
,该模块将尝试查找指定组件的语言绑定。有效的组件为 C
、CXX
、Fortran
、HL
。HL
指的是 C 和 Fortran 的“高级” HDF5 函数。如果未给出 COMPONENTS
参数,则该模块将尝试仅查找 C 绑定。例如,要使用 Fortran HDF5 和 HDF5-HL 函数,请执行:find_package(HDF5 COMPONENTS Fortran HL)
。
此模块将读取变量 HDF5_USE_STATIC_LIBRARIES
以确定是否优先使用静态链接而不是动态链接来链接 HDF5
及其所有依赖项。要使用此功能,请确保在调用 find_package 之前设置 HDF5_USE_STATIC_LIBRARIES
变量。
在 3.10 版本中新增: 在 Windows 上支持 HDF5_USE_STATIC_LIBRARIES
。
串行和并行 HDF5
包装器都会被考虑,并将使用包含其中任一包装器的第一个目录。如果两者出现在同一目录中,则优先选择串行版本。可以通过将变量 HDF5_PREFER_PARALLEL
设置为 TRUE
来反转此行为。
除了查找编译 HDF5
客户端应用程序所需的 include 和库之外,此模块还努力查找 HDF5
发行版附带的可能对回归测试有用的工具。
结果变量¶
此模块将在您的项目中设置以下变量
HDF5_FOUND
在系统上找到了 HDF5
HDF5_VERSION
在 3.3 版本中新增: HDF5 库版本
HDF5_INCLUDE_DIRS
HDF5 头文件位置
HDF5_DEFINITIONS
HDF5 所需的编译器定义
HDF5_LIBRARIES
所有请求的绑定所需的库
HDF5_HL_LIBRARIES
如果启用了
HL
组件,则所有绑定所需的 HDF5 高级 API 的库
可用的组件包括:C
、CXX
、Fortran
和 HL
。对于每个启用的语言绑定,将定义相应的 HDF5_${LANG}_LIBRARIES
变量,以及可能的 HDF5_${LANG}_DEFINITIONS
。如果启用了 HL
组件,则还将定义 HDF5_${LANG}_HL_LIBRARIES
。在启用所有组件的情况下,将定义以下变量
HDF5_C_DEFINITIONS
HDF5 C 绑定所需的编译器定义
HDF5_CXX_DEFINITIONS
HDF5 C++ 绑定所需的编译器定义
HDF5_Fortran_DEFINITIONS
HDF5 Fortran 绑定所需的编译器定义
HDF5_C_INCLUDE_DIRS
HDF5 C 绑定所需的 include 目录
HDF5_CXX_INCLUDE_DIRS
HDF5 C++ 绑定所需的 include 目录
HDF5_Fortran_INCLUDE_DIRS
HDF5 Fortran 绑定所需的 include 目录
HDF5_C_LIBRARIES
HDF5 C 绑定所需的库
HDF5_CXX_LIBRARIES
HDF5 C++ 绑定所需的库
HDF5_Fortran_LIBRARIES
HDF5 Fortran 绑定所需的库
HDF5_C_HL_LIBRARIES
高级 C 绑定所需的库
HDF5_CXX_HL_LIBRARIES
高级 C++ 绑定所需的库
HDF5_Fortran_HL_LIBRARIES
高级 Fortran 绑定所需的库。
HDF5_IS_PARALLEL
HDF5 库具有并行 IO 支持
HDF5_C_COMPILER_EXECUTABLE
HDF5 C 包装器编译器的路径
HDF5_CXX_COMPILER_EXECUTABLE
HDF5 C++ 包装器编译器的路径
HDF5_Fortran_COMPILER_EXECUTABLE
HDF5 Fortran 包装器编译器的路径
HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE
也是 HDF5 包装器的主 C 编译器的路径
HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE
也是 HDF5 包装器的主 C++ 编译器的路径
HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE
也是 HDF5 包装器的主 Fortran 编译器的路径
HDF5_DIFF_EXECUTABLE
HDF5 数据集比较工具的路径
在启用所有组件的情况下,将定义以下目标
HDF5::HDF5
所有检测到的
HDF5_LIBRARIES
。hdf5::hdf5
C 库。
hdf5::hdf5_cpp
C++ 库。
hdf5::hdf5_fortran
Fortran 库。
hdf5::hdf5_hl
高级 C 库。
hdf5::hdf5_hl_cpp
高级 C++ 库。
hdf5::hdf5_hl_fortran
高级 Fortran 库。
hdf5::h5diff
h5diff
可执行文件。
提示¶
可以设置以下变量来指导搜索 HDF5 库和 include
HDF5_PREFER_PARALLEL
在 3.4 版本中新增。
设置为
true
以优先选择并行 HDF5(默认情况下,优先选择串行)HDF5_FIND_DEBUG
在 3.9 版本中新增。
设置为
true
以获取额外的调试输出。HDF5_NO_FIND_PACKAGE_CONFIG_FILE
在 3.8 版本中新增。
设置为
true
以跳过尝试查找hdf5-config.cmake
。