gpt4 book ai didi

c++ - hdf5.h 在Ubuntu和CMake下没有这个文件或目录

转载 作者:行者123 更新时间:2023-11-28 04:25:51 36 4
gpt4 key购买 nike

我已经在 Ubuntu 下安装了 HDF5:

sudo apt install libhdf5-dev

我有一个使用 HDF5 的 Qt 程序,它在 CentOS 7 下可以正常编译,但在 Ubuntu 下不能:

erreur : hdf5.h: No such file or directory #include ^~~~~~~~

我正在使用 CMake 生成构建文件,在其中,我不需要为 CentOS 构建处理 HDF5。

我将在网上找到的这部分添加到 CMake 脚本中,但仍然存在编译错误。

FIND_PACKAGE(ZLIB)
FIND_LIBRARY(HDF5_LIBRARY hdf5 ...)
FIND_LIBRARY(HDF5_HL_LIBRARY hdf5_hl ...)
IF(NOT TARGET hdf5 AND NOT TARGET hdf5_hl)
ADD_LIBRARY(hdf5 SHARED IMPORTED)
ADD_LIBRARY(hdf5_hl SHARED IMPORTED)
ENDIF()
SET_TARGET_PROPERTIES(hdf5 PROPERTIES IMPORTED_LOCATION ${HDF5_LIBRARY})
SET_TARGET_PROPERTIES(hdf5_hl PROPERTIES IMPORTED_LOCATION
${HDF5_HL_LIBRARY})
SET(HDF5_LIBRARIES hdf5 hdf5_hl ${ZLIB_LIBRARIES} m)

我可以向脚本中添加什么来解决包含问题?

通过“定位”,我发现了不同的 hdf5.h :

/usr/include/hdf5/mpich/hdf5.h
/usr/include/hdf5/openmpi/hdf5.h
/usr/include/hdf5/serial/hdf5.h

我真的很想知道“libhdf5-dev”指的是什么?以及为什么在 Ubuntu 下没有正确提供 HDF5(这太疯狂了!)

最佳答案

imported targets的文档中可以看出,您还必须填充 INTERFACE_INCLUDE_DIRECTORIES 以指定 header 位置。您可能还想使用 INTERFACE_LINK_LIBRARIES 添加 HL 的依赖项。

所以这会是这样的:

SET_TARGET_PROPERTIES(hdf5 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS})

我认为这也是您要正确指定的那个:

SET_TARGET_PROPERTIES(hdf5 PROPERTIES INTERFACE_LINK_LIBRARIES ${ZLIB_LIBRARIES} m)
SET_TARGET_PROPERTIES(hdf5_hl PROPERTIES INTERFACE_LINK_LIBRARIES hdf5)

而不是您的 HDF5_LIBRARIES 更改。

关于c++ - hdf5.h 在Ubuntu和CMake下没有这个文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54370647/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com