在 Windows 上使用带有 CMake 的 HDF5 库(错误:“找不到 HDF5”)
Posted
技术标签:
【中文标题】在 Windows 上使用带有 CMake 的 HDF5 库(错误:“找不到 HDF5”)【英文标题】:Using HDF5 Libraries with CMake on Windows (Error: "Could NOT find HDF5") 【发布时间】:2017-09-22 08:19:35 【问题描述】:我想在我的 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_DIR
和HDF5_ROOT
,它们都指向我的HDF5 安装文件夹C:\Develop\HDF5\1.8.10
。
让 CMake 识别 HDF5 安装我缺少什么?
【问题讨论】:
【参考方案1】:现在可以通过 vcpkg (https://github.com/Microsoft/vcpkg) 在 Windows 上安装 hdf5
让
【讨论】:
似乎没有用 find_package 检测到【参考方案2】:我使用的是过时的 HDF5 版本;当前版本为 HDF5-1.8.18。
很遗憾,CMake-hdf5-1.8.18 存档中缺少 VS 2010 x64 生成器。 VS 2012、2013 和 2015 只有 .bat 文件。不过可以添加其他生成器:
-
从 HDF5 下载网站下载 CMake 存档,即从this 网站。确保采用您要安装的版本。
打开文件
HDF5config.cmake
搜索CTEST_CMAKE_GENERATOR
为您想要的生成器添加另一个 elseif
,即对于 Visual Studio 2010 x64:
elseif($BUILD_GENERATOR STREQUAL "VS201064")
set(CTEST_CMAKE_GENERATOR "Visual Studio 10 2010 Win64")
创建另一个 .bat 文件,即build-VS2010-64.bat
将 BUILD_GENERATOR 值替换为您在HDF5config.cmake file
中选择的值,即ctest -S HDF5config.cmake,BUILD_GENERATOR=VS201064 -C Release -V -O hdf5.log
运行 .bat 文件
内置的 HDF5 安装将在文件夹 .\build\_CPack_Packages\win64
中可用
之后,我更改了原始问题中显示的 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)
【讨论】:
以上是关于在 Windows 上使用带有 CMake 的 HDF5 库(错误:“找不到 HDF5”)的主要内容,如果未能解决你的问题,请参考以下文章
无法在带有 VS2017 的 Windows 10 上安装和使用 gRPC C/C++
带有 cmake 和 glew glfw3 和 glm 库的 Opengl