2023-05-08 06:32:41 +00:00
|
|
|
|
# FindHDF5
|
|
|
|
|
# --------
|
|
|
|
|
#
|
2024-03-20 07:33:49 +00:00
|
|
|
|
# Find the HDF5 libraries(Only for HDF5 provided by LAMPCAE)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
#
|
|
|
|
|
# Result Variables
|
|
|
|
|
# ^^^^^^^^^^^^^^^^
|
|
|
|
|
#
|
|
|
|
|
# The following variables will be defined:
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_FOUND`` True if HDF5 found on the local system
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_VERSION`` HDF5 Version(x.x.x)
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_VERSION_MAJOR`` HDF5 Major Version
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_VERSION_MINOR`` HDF5 Minor Version
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_VERSION_PATCH`` HDF5 Patch Version
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_DIRS`` Location of HDF5(root dir)
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_INCLUDE_DIRS`` Location of HDF5 header files
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_LIBRARY_DIRS`` Location of HDF5 libraries
|
|
|
|
|
#
|
|
|
|
|
# ``HDF5_LIBRARIES`` List of the HDF5 libraries found
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
# 防止重复引入
|
2024-03-20 07:33:49 +00:00
|
|
|
|
if(LAMPCAE_HDF5_ALREADY_INCLUDED)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
return()
|
|
|
|
|
endif()
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set(LAMPCAE_HDF5_ALREADY_INCLUDED 1)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
|
|
|
|
|
# find_path 搜索包含某个文件的路径
|
|
|
|
|
# 如果在某个路径下发现了该文件,该结果会被存储到该变量中;如果没有找到,存储的结果将会是<VAR>-NOTFOUND
|
|
|
|
|
find_path(HDF5_DIRS
|
|
|
|
|
NAMES
|
|
|
|
|
include/hdf5.h
|
|
|
|
|
PATHS
|
|
|
|
|
${CMAKE_SOURCE_DIR}/extlib/HDF5
|
|
|
|
|
NO_SYSTEM_ENVIRONMENT_PATH
|
|
|
|
|
NO_CMAKE_SYSTEM_PATH
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set(HDF5_VERSION_MAJOR 1)
|
|
|
|
|
set(HDF5_VERSION_MINOR 13)
|
|
|
|
|
set(HDF5_VERSION_PATCH 1)
|
|
|
|
|
|
|
|
|
|
set(HDF5_VERSION "${HDF5_VERSION_MAJOR}.${HDF5_VERSION_MINOR}.${HDF5_VERSION_PATCH}")
|
|
|
|
|
|
|
|
|
|
find_path(HDF5_INCLUDE_DIRS
|
|
|
|
|
NAMES
|
|
|
|
|
hdf5.h
|
|
|
|
|
HINTS
|
|
|
|
|
${HDF5_DIRS}/include
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
find_path(HDF5_LIBRARY_DIRS
|
|
|
|
|
NAMES
|
|
|
|
|
hdf5.lib libhdf5.so
|
|
|
|
|
HINTS
|
|
|
|
|
${HDF5_DIRS}/lib
|
|
|
|
|
)
|
|
|
|
|
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set(HDF5_LIBRARIES LAMPCAE::HDF5;LAMPCAE::HDF5CPP;LAMPCAE::HDF5HL;LAMPCAE::HDF5HLCPP;LAMPCAE::HDF5TOOLS)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
|
2024-03-20 07:33:49 +00:00
|
|
|
|
add_library(LAMPCAE::HDF5 SHARED IMPORTED)
|
|
|
|
|
add_library(LAMPCAE::HDF5CPP SHARED IMPORTED)
|
|
|
|
|
add_library(LAMPCAE::HDF5HL SHARED IMPORTED)
|
|
|
|
|
add_library(LAMPCAE::HDF5HLCPP SHARED IMPORTED)
|
|
|
|
|
add_library(LAMPCAE::HDF5TOOLS SHARED IMPORTED)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_property(TARGET LAMPCAE::HDF5 PROPERTY INTERFACE_COMPILE_DEFINITIONS "H5_BUILT_AS_DYNAMIC_LIB")
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS})
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5 APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_property(TARGET LAMPCAE::HDF5CPP PROPERTY INTERFACE_COMPILE_DEFINITIONS "H5_BUILT_AS_DYNAMIC_LIB")
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5CPP PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS})
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5CPP APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5CPP PROPERTY INTERFACE_LINK_LIBRARIES LAMPCAE::HDF5)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_property(TARGET LAMPCAE::HDF5HL PROPERTY INTERFACE_COMPILE_DEFINITIONS "H5_BUILT_AS_DYNAMIC_LIB")
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5HL PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS})
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5HL APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5HL PROPERTY INTERFACE_LINK_LIBRARIES LAMPCAE::HDF5)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_property(TARGET LAMPCAE::HDF5HLCPP PROPERTY INTERFACE_COMPILE_DEFINITIONS "H5_BUILT_AS_DYNAMIC_LIB")
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5HLCPP PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS})
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5HLCPP APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5HLCPP PROPERTY INTERFACE_LINK_LIBRARIES LAMPCAE::HDF5HL)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_property(TARGET LAMPCAE::HDF5TOOLS PROPERTY INTERFACE_COMPILE_DEFINITIONS "H5_BUILT_AS_DYNAMIC_LIB")
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5TOOLS PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS})
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5TOOLS APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
|
|
|
|
set_property(TARGET LAMPCAE::HDF5TOOLS PROPERTY INTERFACE_LINK_LIBRARIES LAMPCAE::HDF5)
|
2023-05-08 06:32:41 +00:00
|
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5 PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5.so.300.1.0"
|
|
|
|
|
IMPORTED_SONAME_RELEASE "libhdf5.so.300"
|
|
|
|
|
)
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5CPP PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5_cpp.so.300.0.1"
|
|
|
|
|
IMPORTED_SONAME_RELEASE "libhdf5_cpp.so.300"
|
|
|
|
|
)
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5HL PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5_hl.so.300.0.1"
|
|
|
|
|
IMPORTED_SONAME_RELEASE "libhdf5_hl.so.300"
|
|
|
|
|
)
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5HLCPP PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5_hl_cpp.so.300.0.1"
|
|
|
|
|
IMPORTED_SONAME_RELEASE "libhdf5_hl_cpp.so.300"
|
|
|
|
|
)
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5TOOLS PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5_tools.so.300.0.1"
|
|
|
|
|
IMPORTED_SONAME_RELEASE "libhdf5_tools.so.300"
|
|
|
|
|
)
|
|
|
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5 PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5.lib"
|
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5.dll"
|
|
|
|
|
)
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5CPP PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5_cpp.lib"
|
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5_cpp.dll"
|
|
|
|
|
)
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5HL PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5_hl.lib"
|
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5_hl.dll"
|
|
|
|
|
)
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5HLCPP PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5_hl_cpp.lib"
|
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5_hl_cpp.dll"
|
|
|
|
|
)
|
2024-03-20 07:33:49 +00:00
|
|
|
|
set_target_properties(LAMPCAE::HDF5TOOLS PROPERTIES
|
2023-05-08 06:32:41 +00:00
|
|
|
|
IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5_tools.lib"
|
|
|
|
|
IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5_tools.dll"
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
|
|
|
|
|
|
|
|
# 如果找到所有需要的变量,并且版本匹配,则将HDF5_FOUND变量设置为TRUE
|
|
|
|
|
find_package_handle_standard_args(HDF5
|
|
|
|
|
FOUND_VAR
|
|
|
|
|
HDF5_FOUND
|
|
|
|
|
REQUIRED_VARS
|
|
|
|
|
HDF5_DIRS
|
|
|
|
|
HDF5_INCLUDE_DIRS
|
|
|
|
|
HDF5_LIBRARY_DIRS
|
|
|
|
|
HDF5_LIBRARIES
|
|
|
|
|
VERSION_VAR
|
|
|
|
|
HDF5_VERSION
|
|
|
|
|
)
|