我发现了一种可行的方法:HDF5配置存储在一个文件中
libhdf5.settings
在库路径中。CMake能够读取和解析此文件。不过,我还没有找到一种可靠的方法来获得正确的路径。尽管如此,对于默认的安装目录,此代码段能够解析以下选项:
find_package(HDF5 COMPONENTS C)
if (HDF5_FOUND)
message("HDF5 was found, searching configuration...")
# this search works for default install path of any version
# change path if hdf5 was build into a non-default directory
file(GLOB HDF5_SETTINGS "/usr/local/HDF_Group/HDF5/*/lib/libhdf5.settings")
if (HDF5_SETTINGS)
message("Checking HDF5 settings in : ${HDF5_SETTINGS}")
file(STRINGS ${HDF5_SETTINGS} HDF5_SETTINGS_CONTENT)
string(REGEX MATCH "Threadsafety: ON" HDF5_HAS_THREADSAFE ${HDF5_SETTINGS_CONTENT})
string(REGEX MATCH "Direct VFD: 1" HDF5_HAS_DIRECTIO ${HDF5_SETTINGS_CONTENT})
if (HDF5_HAS_THREADSAFE AND HDF5_HAS_DIRECTIO)
message("Correct HDF5 settings found.")
else()
message(WARNING "HDF5 Settings are incorrect. Please reinstall HDF5 with --threadsafe and --directvfd options enabled.")
set(HDF5_FOUND false)
endif()
endif(HDF5_SETTINGS)
endif(HDF5_FOUND)