CMake:如何避免 HDF5 系统和 conda 安装中的不匹配?
Posted
技术标签:
【中文标题】CMake:如何避免 HDF5 系统和 conda 安装中的不匹配?【英文标题】:CMake: How do I avoid missmatch in HDF5 system and conda installation? 【发布时间】:2019-06-27 08:18:26 【问题描述】:我有一个链接到 hdf5 库的 CMake 项目。在我的系统上,我有两个版本的 hdf5:一个安装了系统的包管理器,一个安装了 conda。我想使用 conda 版本来构建我的项目。为此,我使用 CMake 来查找 hdf5 库
find_package(HDF5 COMPONENTS CXX)
这为 conda 安装定义了 HDF5_INCLUDE_DIRS 变量。然而 HDF5_CXX_LIBRARIES 变量被弄乱了,并且包含了两个库路径的路径。系统的安装也会首先出现。因此,当我使用 ccmake 检查构建变量时,将 HDF_CXX_LIBRARY_hdf5 设置为 conda 路径,并将 HDF5_CXX_LIBRARY_hdf5_cpp 设置为系统路径,因此在构建时出现未定义的引用错误。用 ccmake 改变后一个变量可以解决这个问题。然而,这并不是一个令人满意的解决方案。
有没有办法确保 CMake 只使用 conda 库的路径?
【问题讨论】:
确保发现路径只使用了 conda(首先是它)。 此外,您在链接时遇到的问题也会在执行时出现,因为会选择错误的库。 反之怎么办?我的 cmake 正在为 hdf5 找到 conda 包含,我希望它使用 ubuntu install 的 hfd5/serial 【参考方案1】:我能够通过将 HDF5_ROOT 设置为 CONDA_ROOT 来解决问题。因此 CMake 将首先在 HDF5 的 conda 根目录中查找并识别正确的版本。
【讨论】:
以上是关于CMake:如何避免 HDF5 系统和 conda 安装中的不匹配?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上使用带有 CMake 的 HDF5 库(错误:“找不到 HDF5”)