在写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的就能编译通过了,如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值