The binary supplied FindHDF5.cmake was a temporary fix before the CMake module 
was updated. It will be removed in the next release.
The CMake supplied FindHDF5.cmake module is designed to find the non-cmake 
built libraries first.
find_package is preferred for the CMake built binaries.

Allen


On Thursday, January 14, 2016 12:26:48 PM houssen wrote:
> Any clue or ideas on how to do ?...
> 
> FH
> 
> Le 2016-01-13 16:59, houssen a écrit :
> > How to choose the FindHDF5.cmake to use ?
> > 
> > My understanding (according to tutorials and comments found at the
> > top of FindHDF5.cmake files) is that to use HDF5, I have to add these
> > 3 lines in the CMakeLists.txt of my project:
> > FIND_PACKAGE ( HDF5 1.8.15 )
> > TARGET_LINK_LIBRARIES ( myDSO PUBLIC ${HDF5_LIBRARIES} )
> > TARGET_INCLUDE_DIRECTORIES ( myDSO PUBLIC ${HDF5_INCLUDE_DIRS} )
> > My understanding is that all FindHDF5.cmake on all plateforms must
> > always set HDF5_LIBRARIES and HDF5_INCLUDE_DIRS : this make things
> > portable (one can compile on any computer with any version of CMake
> > and HDF5).
> > 
> > I installed the last version of CMake in /tmp/local (the one I had
> > was too old to support HDF5-1.8.15). Note that FindHDF5.cmake is
> > found
> > in /tmp/local/share/cmake-3.4/Modules (/tmp/local/share/cmake has not
> > been created).
> > /tmp/cmake-3.4.1/BUILD> cmake -DCMAKE_INSTALL_PREFIX:PATH=/tmp/local
> > ..; make all install
> > /tmp/cmake-3.4.1/BUILD> ls /tmp/local/share/
> > aclocal cmake-3.4
> > /tmp/cmake-3.4.1/BUILD> ls
> > /tmp/local/share/cmake-3.4/Modules/FindHDF5.cmake
> > /tmp/local/share/cmake-3.4/Modules/FindHDF5.cmake
> > 
> > Now, with the last version of CMake (3.4), I can build and install
> > the last version of HDF5 (1.8.15) in /tmp/local. Note that another
> > FindHDF5.cmake has been created by the HDF5 install process in
> > /tmp/local/share/cmake.
> > /tmp> export CMAKE_ROOT=/tmp/local/share/cmake-3.4
> > /tmp> export CMAKE_MODULE_PATH=/tmp/local/share/cmake-3.4/Modules
> > /tmp> export CMAKE_PREFIX_PATH=/tmp/local
> > /tmp> export PATH=/tmp/local/bin:$PATH
> > /tmp> export LD_LIBRARY_PATH=/tmp/local/lib:$LD_LIBRARY_PATH
> > /tmp/hdf5-1.8.15/BUILD> cmake --version
> > cmake version 3.4.1
> > /tmp/hdf5-1.8.15/BUILD> cmake -DCMAKE_INSTALL_PREFIX:PATH=/tmp/local
> > ..; make all install
> > /tmp/hdf5-1.8.15/BUILD> ls /tmp/local/share/cmake/
> > FindHDF5.cmake hdf5-config.cmake hdf5-config-version.cmake
> > hdf5-targets.cmake hdf5-targets-noconfig.cmake
> > 
> > OK, now, I am in a situation where I can use HDF5.
> > 
> > First I don't set HDF5_DIR, so I am supposed to use the
> > FindHDF5.cmake provided by CMake (in
> > /tmp/local/share/cmake-3.4/Modules) : I have DF5_hdf5_LIBRARY_RELEASE
> > and HDF5_C_INCLUDE_DIR but NOT HDF5_LIBRARIES and HDF5_INCLUDE_DIRS.
> > /tmp/useHDF5/BUILD> rm -fr *; cmake ..; cmake -LA . | grep HDF5
> > ...
> > -- Found HDF5:
> > 
> > /tmp/local/lib/libhdf5.a;/usr/lib/x86_64-linux-gnu/libpthread.so;/usr/lib/
> > x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_6
> > 4-linux-gnu/libm.so (found suitable version "1.8.15", minimum required is
> > "1.8.15")
> > -- Configuring done
> > -- Generating done
> > -- Build files have been written to: /tmp/useHDF5/BUILD
> > 3:-- Build files have been written to: /tmp/useHDF5/BUILD
> > 52:HDF5_CXX_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5c++
> > 53:HDF5_C_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5cc
> > 54:HDF5_C_INCLUDE_DIR:PATH=/tmp/local/include
> > 55:HDF5_DIFF_EXECUTABLE:FILEPATH=/tmp/local/bin/h5diff
> > 56:HDF5_DIR:PATH=HDF5_DIR-NOTFOUND
> > 57:HDF5_Fortran_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5fc
> > 58:HDF5_IS_PARALLEL:BOOL=FALSE
> > 59:HDF5_dl_LIBRARY_DEBUG:FILEPATH=HDF5_dl_LIBRARY_DEBUG-NOTFOUND
> > 
> > 60:HDF5_dl_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libdl.so
> > 61:HDF5_hdf5_LIBRARY_DEBUG:FILEPATH=HDF5_hdf5_LIBRARY_DEBUG-NOTFOUND
> > 62:HDF5_hdf5_LIBRARY_RELEASE:FILEPATH=/tmp/local/lib/libhdf5.a
> > 63:HDF5_m_LIBRARY_DEBUG:FILEPATH=HDF5_m_LIBRARY_DEBUG-NOTFOUND
> > 64:HDF5_m_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libm.so
> > 
> > 65:HDF5_pthread_LIBRARY_DEBUG:FILEPATH=HDF5_pthread_LIBRARY_DEBUG-NOTFOUND
> > 
> > 66:HDF5_pthread_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libpthr
> > ead.so 67:HDF5_z_LIBRARY_DEBUG:FILEPATH=HDF5_z_LIBRARY_DEBUG-NOTFOUND
> > 68:HDF5_z_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libz.so
> > 
> > Now I use HDF5_DIR to point at the FindHDF5.cmake created by the
> > install of HDF5: I have HDF5_C_LIBRARY but NOT HDF5_LIBRARIES and
> > HDF5_INCLUDE_DIRS.
> > /tmp/useHDF5/BUILD> export HDF5_DIR=/tmp/local/share/cmake
> > /tmp/useHDF5/BUILD> rm -fr *; cmake ..; cmake -LA . | grep HDF5
> > ...
> > -- Found HDF5: /tmp/local/lib/libhdf5.a (found suitable version
> > "1.8.15", minimum required is "1.8.15")
> > -- Configuring done
> > -- Generating done
> > -- Build files have been written to: /tmp/useHDF5/BUILD
> > 3:-- Build files have been written to: /tmp/useHDF5/BUILD
> > 52:HDF5_CXX_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5c++
> > 53:HDF5_C_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5cc
> > 54:HDF5_C_LIBRARY:PATH=/tmp/local/lib/libhdf5.a
> > 55:HDF5_DIFF_EXECUTABLE:FILEPATH=/tmp/local/bin/h5diff
> > 56:HDF5_DIR:PATH=/tmp/local/share/cmake
> > 57:HDF5_Fortran_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5fc
> > 
> > Now, according to this thread
> > 
> > http://stackoverflow.com/questions/20746936/cmake-of-what-use-is-find-pack
> > age-if-you-need-to-specify-cmake-module-path-an, I give a try to the CMake
> > CONFIG mode.
> > 
> > Using the HDF5Config.cmake from CMake, I get an (expected) error:
> > /tmp/useHDF5/BUILD> export HDF5_DIR=
> > /tmp/useHDF5/BUILD
> > 
> >>> rm -fr *; cmake ..; cmake -LA . | grep HDF5
> > 
> > ...
> > 
> > CMake Warning at CMakeLists.txt:4 (FIND_PACKAGE):
> >  Could not find a package configuration file provided by "HDF5"
> > 
> > (requested
> > 
> >  version 1.8.15) with any of the following names:
> >  HDF5Config.cmake
> >  hdf5-config.cmake
> > 
> > Using the HDF5Config.cmake installed by HDF5:
> > /tmp/useHDF5/BUILD> export HDF5_DIR=/tmp/local/share/cmake
> > /tmp/useHDF5/BUILD> rm -fr *; cmake ..; cmake -LA . | grep HDF5
> > ...
> > -- Configuring done
> > -- Generating done
> > -- Build files have been written to: /tmp/useHDF5/BUILD
> > 3:-- Build files have been written to: /tmp/useHDF5/BUILD
> > 52:HDF5_DIR:PATH=/tmp/local/share/cmake
> > 
> > Why can't I have HDF5_LIBRARIES and HDF5_INCLUDE_DIRS set for me by
> > the CMake of HDF5 ?
> > 
> > Thanks,
> > 
> > FH
> 
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> Hdf-forum@lists.hdfgroup.org
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5


_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Reply via email to