Using HDF5 Libraries with CMake on Windows (Error: "Could NOT find HDF5")
Using HDF5 Libraries with CMake on Windows (Error: "Could NOT find HDF5")
我想在我的 C++ 程序中使用 HDF5 库。我在Windows7上使用VS 2010 x64编译器和CMake 3.8.0rc2。我安装的HDF5版本是1.8.10(由运行官方"Installer"安装)。
在我的 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.8.10
。
我缺少什么让 CMake 识别 HDF5 安装?
我使用的是过时的 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})
现在可以通过 vcpkg (https://github.com/Microsoft/vcpkg)
在 Windows 上安装 hdf5
让
我想在我的 C++ 程序中使用 HDF5 库。我在Windows7上使用VS 2010 x64编译器和CMake 3.8.0rc2。我安装的HDF5版本是1.8.10(由运行官方"Installer"安装)。
在我的 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.8.10
。
我缺少什么让 CMake 识别 HDF5 安装?
我使用的是过时的 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})
现在可以通过 vcpkg (https://github.com/Microsoft/vcpkg)
在 Windows 上安装 hdf5让