- 問題描述:
項目中開發hdf5的讀寫,之前我在linux安裝過hdf5,安裝默認路徑是“/usr/lib,最近我又重裝了hdf5,增加了c++選項,安裝路徑是“/usr/local/hdf5/lib”,我自己寫的cmake的內容如下:
--FindHDF5.cmake
# HDF5_INCLUDE_DIR --<name>_INCLUDE_DIR
# HDF5_LIBRARY_DIR --<name>_LIBRARY
# HDF5_FOUND --<name>_FOUND
FIND_PATH(HDF5_INCLUDE_DIR hdf5.h /usr/local/hdf5/include)
MESSAGE(STATUS "HDF5_INCLUDE_DIR: " ${HDF5_INCLUDE_DIR})
FIND_LIBRARY(HDF5_LIBRARY_DIR hdf5 /usr/local/hdf5/lib)
MESSAGE(STATUS "HDF5_LIBRARY_DIR: " ${HDF5_LIBRARY_DIR} )
IF (HDF5_INCLUDE_DIR AND HDF5_LIBRARY_DIR)
SET(HDF5_FOUND TRUE)
ENDIF(HDF5_INCLUDE_DIR AND HDF5_LIBRARY_DIR)
IF (HDF5_FOUND)
IF(NOT HDF5_FIND_QUIETLY)
MESSAGE(STATUS "Found HDF5: ${HDF5_LIBRARY_DIR}")
ENDIF(NOT HDF5_FIND_QUIETLY)
ELSE (HDF5_FOUND)
IF (HDF5_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find hdf5 library")
ENDIF (HDF5_FIND_REQUIRED)
ENDIF(HDF5_FOUND)
FindHDF5Cxx.cmake
# HDF5Cxx_INCLUDE_DIR --<name>_INCLUDE_DIR
# HDF5Cxx_LIBRARY_DIR --<name>_LIBRARY
# HDF5Cxx_FOUND --<name>_FOUND
FIND_PATH(HDF5Cxx_INCLUDE_DIR H5Cpp.h /home/zyx/projects/hdf/src)
MESSAGE(STATUS "HDF5Cxx_INCLUDE_DIR: " ${HDF5Cxx_INCLUDE_DIR})
FIND_LIBRARY(HDF5Cxx_LIBRARY_DIR hdf5_cpp /usr/local/hdf5/lib)
MESSAGE(STATUS "HDF5Cxx_LIBRARY_DIR: " ${HDF5Cxx_LIBRARY_DIR} )
IF (HDF5Cxx_INCLUDE_DIR AND HDF5Cxx_LIBRARY_DIR)
SET(HDF5Cxx_FOUND TRUE)
ENDIF(HDF5Cxx_INCLUDE_DIR AND HDF5Cxx_LIBRARY_DIR)
IF (HDF5Cxx_FOUND)
IF(NOT HDF5Cxx_FIND_QUIETLY)
MESSAGE(STATUS "Found HDF5Cxx: ${HDF5Cxx_LIBRARY_DIR}")
ENDIF(NOT HDF5Cxx_FIND_QUIETLY)
ELSE (HDF5Cxx_FOUND)
IF (HDF5Cxx_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find hdf5Cxx library")
ENDIF (HDF5Cxx_FIND_REQUIRED)
ENDIF(HDF5Cxx_FOUND)
camke指定的查找路徑是“/usr/local/hdf5/lib”,但打印的結果是:
2. 解決方法:
解決的辦法很簡單,就是把之前安裝路徑下的”/usr/lib”的hdf5庫都刪掉,哈哈!
正確的輸出結果:
依賴的頭文件和庫都能正確找到,make的就能編譯通過了,如下: