FindHDF5¶
Find Hierarchical Data Format (HDF5), a library for reading and writing self describing array data.
This module invokes the HDF5 wrapper compiler that should be installed
alongside HDF5.  Depending upon the HDF5 Configuration, the wrapper
compiler is called either h5cc or h5pcc.  If this succeeds, the module
will then call the compiler with the show argument to see what flags
are used when compiling an HDF5 client application.
The module will optionally accept the COMPONENTS argument.  If no
COMPONENTS are specified, then the find module will default to finding
only the HDF5 C library.  If one or more COMPONENTS are specified, the
module will attempt to find the language bindings for the specified
components.  The valid components are C, CXX, Fortran, HL.
HL refers to the "high-level" HDF5 functions for C and Fortran.
If the COMPONENTS argument is not given, the module will
attempt to find only the C bindings.
For example, to use Fortran HDF5 and HDF5-HL functions, do:
find_package(HDF5 COMPONENTS Fortran HL).
This module will read the variable
HDF5_USE_STATIC_LIBRARIES to determine whether or not to prefer a
static link to a dynamic link for HDF5 and all of it's dependencies.
To use this feature, make sure that the HDF5_USE_STATIC_LIBRARIES
variable is set before the call to find_package.
New in version 3.10: Support for HDF5_USE_STATIC_LIBRARIES on Windows.
Both the serial and parallel HDF5 wrappers are considered and the first
directory to contain either one will be used.  In the event that both appear
in the same directory the serial version is preferentially selected. This
behavior can be reversed by setting the variable HDF5_PREFER_PARALLEL to
TRUE.
In addition to finding the includes and libraries required to compile
an HDF5 client application, this module also makes an effort to find
tools that come with the HDF5 distribution that may be useful for
regression testing.
Result Variables¶
This module will set the following variables in your project:
- HDF5_FOUND
- HDF5 was found on the system 
- HDF5_VERSION
- New in version 3.3: HDF5 library version 
- HDF5_INCLUDE_DIRS
- Location of the HDF5 header files 
- HDF5_DEFINITIONS
- Required compiler definitions for HDF5 
- HDF5_LIBRARIES
- Required libraries for all requested bindings 
- HDF5_HL_LIBRARIES
- Required libraries for the HDF5 high level API for all bindings, if the - HLcomponent is enabled
Available components are: C CXX Fortran and HL.
For each enabled language binding, a corresponding HDF5_${LANG}_LIBRARIES
variable, and potentially HDF5_${LANG}_DEFINITIONS, will be defined.
If the HL component is enabled, then an HDF5_${LANG}_HL_LIBRARIES will
also be defined.  With all components enabled, the following variables will be defined:
- HDF5_C_DEFINITIONS
- Required compiler definitions for HDF5 C bindings 
- HDF5_CXX_DEFINITIONS
- Required compiler definitions for HDF5 C++ bindings 
- HDF5_Fortran_DEFINITIONS
- Required compiler definitions for HDF5 Fortran bindings 
- HDF5_C_INCLUDE_DIRS
- Required include directories for HDF5 C bindings 
- HDF5_CXX_INCLUDE_DIRS
- Required include directories for HDF5 C++ bindings 
- HDF5_Fortran_INCLUDE_DIRS
- Required include directories for HDF5 Fortran bindings 
- HDF5_C_LIBRARIES
- Required libraries for the HDF5 C bindings 
- HDF5_CXX_LIBRARIES
- Required libraries for the HDF5 C++ bindings 
- HDF5_Fortran_LIBRARIES
- Required libraries for the HDF5 Fortran bindings 
- HDF5_C_HL_LIBRARIES
- Required libraries for the high level C bindings 
- HDF5_CXX_HL_LIBRARIES
- Required libraries for the high level C++ bindings 
- HDF5_Fortran_HL_LIBRARIES
- Required libraries for the high level Fortran bindings. 
- HDF5_IS_PARALLEL
- HDF5 library has parallel IO support 
- HDF5_C_COMPILER_EXECUTABLE
- path to the HDF5 C wrapper compiler 
- HDF5_CXX_COMPILER_EXECUTABLE
- path to the HDF5 C++ wrapper compiler 
- HDF5_Fortran_COMPILER_EXECUTABLE
- path to the HDF5 Fortran wrapper compiler 
- HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE
- path to the primary C compiler which is also the HDF5 wrapper 
- HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE
- path to the primary C++ compiler which is also the HDF5 wrapper 
- HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE
- path to the primary Fortran compiler which is also the HDF5 wrapper 
- HDF5_DIFF_EXECUTABLE
- path to the HDF5 dataset comparison tool 
With all components enabled, the following targets will be defined:
- HDF5::HDF5
- All detected - HDF5_LIBRARIES.
- hdf5::hdf5
- C library. 
- hdf5::hdf5_cpp
- C++ library. 
- hdf5::hdf5_fortran
- Fortran library. 
- hdf5::hdf5_hl
- High-level C library. 
- hdf5::hdf5_hl_cpp
- High-level C++ library. 
- hdf5::hdf5_hl_fortran
- High-level Fortran library. 
- hdf5::h5diff
- h5diffexecutable.
Hints¶
The following variables can be set to guide the search for HDF5 libraries and includes:
- HDF5_PREFER_PARALLEL
- New in version 3.4. - set - trueto prefer parallel HDF5 (by default, serial is preferred)
- HDF5_FIND_DEBUG
- New in version 3.9. - Set - trueto get extra debugging output.
- HDF5_NO_FIND_PACKAGE_CONFIG_FILE
- New in version 3.8. - Set - trueto skip trying to find- hdf5-config.cmake.
