在Windows上使用带有CMake的HDF5库(错误:"无法找到HDF5")

时间:2017-04-25 10:50:13

标签: cmake hdf5 cmake-gui

我想在我的C ++程序中使用HDF5库。我在Windows 7上使用VS 2010 x64编译器和CMake 3.8.0rc2。我安装的HDF5版本是1.8.10(通过运行官方"安装程序"安装)。

在我的CMakeLists文件中,我添加了以下几行:

FIND_PACKAGE ( HDF5 REQUIRED )
INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIRS})
SET (HDF5_LIBS ${HDF5_LIBS} ${HDF5_LIBRARIES})
...
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES} ${HDF5_LIBS})

CMake在配置时显示以下错误消息:

Could NOT find HDF5 (missing: HDF5_LIBRARIES)

我还添加了环境变量HDF5_DIRHDF5_ROOT,它们都指向我的HDF5安装文件夹C:\Develop\HDF5\1.8.10

让CMake认识HDF5的安装我错过了什么?

2 个答案:

答案 0 :(得分:0)

我使用的是过时的HDF5版本;目前的版本是HDF5-1.8.18。

不幸的是,CMake-hdf5-1.8.18存档中缺少VS 2010 x64生成器。 VS 2012,2013和2015只有.bat文件。可以添加其他生成器:

  1. 从HDF5下载网站下载CMake存档,即从this网站下载。确保使用您要安装的版本。
  2. 打开文件HDF5config.cmake
  3. 搜索CTEST_CMAKE_GENERATOR
  4. 为您想要的生成器添加另一个elseif,即对于Visual Studio 2010 x64:   elseif(${BUILD_GENERATOR} STREQUAL "VS201064") set(CTEST_CMAKE_GENERATOR "Visual Studio 10 2010 Win64")
  5. 创建另一个.bat文件,即build-VS2010-64.bat
  6. 将BUILD_GENERATOR值替换为您在HDF5config.cmake file中选择的值,即ctest -S HDF5config.cmake,BUILD_GENERATOR=VS201064 -C Release -V -O hdf5.log
  7. 运行.bat文件
  8. 内置的HDF5安装将在文件夹.\build\_CPack_Packages\win64
  9. 中提供

    之后我更改了原始问题中显示的CMakeLists行,如编译时创建的USING_HDF5_CMake.txt所示。请注意,我在组件列表中将C更改为CXX,因为我有C ++项目。

    set (LIB_TYPE STATIC) # or SHARED
    string(TOLOWER ${LIB_TYPE} SEARCH_TYPE)
    
    find_package (HDF5 NAMES hdf5 COMPONENTS CXX ${SEARCH_TYPE})
    # find_package (HDF5) # Find non-cmake built HDF5
    INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIR})
    set (LINK_LIBS ${LINK_LIBS} ${HDF5_CXX_${LIB_TYPE}_LIBRARY})
    

答案 1 :(得分:0)

hdf5现在可以通过vcpkg(https://github.com/Microsoft/vcpkg

安装在Windows上