在寫cmake遇到的問題


  1. 問題描述:

項目中開發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的就能編譯通過了,如下:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章