【发布时间】:2019-01-04 18:14:36
【问题描述】:
我想在使用 CMake 构建的项目中使用 HDF5 C++ 绑定。所以我照常做:
find_package (HDF5 REQUIRED COMPONENTS CXX)
target_link_libraries(foo PUBLIC ${HDF5_LIBRARIES})
target_include_directories(foo PUBLIC ${HDF5_INCLUDE_DIRS})
这在我们的集群 (HPC) 升级之前一直有效。 现在我在链接过程中遇到错误:
function MPI::Win::Set_name(char const*): error: undefined reference to 'MPI_Win_set_name'
function MPI::Win::Set_attr(int, void const*): error: undefined reference to 'MPI_Win_set_attr'
虽然 HDF5 的版本没有改变,但新版本似乎需要链接 MPI,而 CMake 不会告诉我/自动执行。
我错过了什么吗? CMake FindHDF5 模块是否存在缺陷,或者在设置HDF5_IS_PARALLEL 时我是否需要手动链接 MPI?我现在需要将 MY 应用程序与 mpi 关联起来,这怎么可能?
我做了一些检查:
- 两个 hdf5 库上的 ldd 显示 libmpi
- 我的应用在任一系统上都没有
-lmpi - 两者均使用 HDF5 1.10.1,均针对 OpenMPI 2.1.2 和 GCC 6.4.0 构建
-
mpicxx -show显示不同的输出:新的包含-lmpi_cxx,旧的没有。 -
h5c++ -show似乎是一样的(当然还有其他路径)
【问题讨论】: