CMake 3.6.0 FindHD5 does not work for Homebrew installed HDF5 under OS X
The changes introduced in the CMake FindHDF5 module broke the detection of HD5 installed with Homebrew.
E.g. using the follow example file
cmake_minimum_required(VERSION 3.6)
project (hdf5)
set (HDF5_USE_STATIC_LIBRARIES On)
find_package(HDF5 COMPONENTS C CXX HL)
get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})
if (_variableName MATCHES "HDF5")
message(STATUS "${_variableName}=${${_variableName}}")
endif()
endforeach()
results in the following variables set up for the HDF5 C component:
-- HDF5_C_DEFINITIONS=
-- HDF5_C_FOUND=True
-- HDF5_C_INCLUDE_DIRS=/usr/include;/usr/local/opt/szip/include
-- HDF5_C_LIBRARIES=/usr/local/lib/libsz.dylib;/usr/lib/libz.dylib;/usr/lib/libdl.dylib;/usr/lib/libm.dylib
-- HDF5_C_LIBRARY_DIRS=/usr/local/Cellar/hdf5/1.8.16_1/lib;/usr/lib;/usr/local/opt/szip/lib
-- HDF5_C_LIBRARY_NAMES=sz;z;dl;m
-- HDF5_C_LIBRARY_dl=/usr/lib/libdl.dylib
-- HDF5_C_LIBRARY_m=/usr/lib/libm.dylib
-- HDF5_C_LIBRARY_sz=/usr/local/lib/libsz.dylib
-- HDF5_C_LIBRARY_z=/usr/lib/libz.dylib
-- HDF5_C_RETURN_VALUE=0
-- HDF5_C_VERSION=1.8.16
The HDF5_C_LIBRARIES
does not include the necessary HDF5 libraries (e.g., libhdf5.a).
I think the problem is related to _HDF5_parse_compile_line
which does not cope with absolute library path in HDF5_C_COMPILE_LINE
:
HDF5_C_COMPILE_LINE=clang -I/usr/include -I/usr/local/opt/szip/include -L/usr/local/Cellar/hdf5/1.8.16_1/lib /usr/local/Cellar/hdf5/1.8.16_1/lib/libhdf5_hl.a /usr/local/Cellar/hdf5/1.8.16_1/lib/libhdf5.a -L/usr/lib -L/usr/local/opt/szip/lib -lsz -lz -ldl -lm