在Windows上使用CMake的HDF5库(错误:“找不到HDF5”)
问题描述:
我想在我的C++程序中使用HDF5库。我在Windows 7上使用VS 2010 x64编译器和CMake 3.8.0rc2。我安装的HDF5版本是1.8.10(通过运行官方“Installer”安装)。在配置在Windows上使用CMake的HDF5库(错误:“找不到HDF5”)
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
这两个点
在我CMakeLists文件,添加以下行到我的HDF5安装文件夹C:\Develop\HDF5\1.8.10
。
我错过了让CMake识别HDF5安装?
答
我使用的是过时的HDF5版本;目前的版本是HDF5-1.8.18。
不幸的是,CMake-hdf5-1.8.18归档中缺少VS 2010 x64生成器。只有蝙蝠对VS 2012年,2013年和2015年是可能的,虽然添加其他发电机文件:
从HDF5下载网站- 下载CMake的存档,即从this网站。确保采取您想要安装的版本。
- 打开文件
HDF5config.cmake
- 搜索
CTEST_CMAKE_GENERATOR
- 您所需的发电机添加另一个
elseif
,即对于Visual Studio 2010的64: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})