2017-04-25 671 views
0

我想在我的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_DIRHDF5_ROOT這兩個點

在我CMakeLists文件,添加以下行到我的HDF5安裝文件夾C:\Develop\HDF5\1.8.10

我錯過了讓CMake識別HDF5安裝?

回答

0

我使用的是過時的HDF5版本;目前的版本是HDF5-1.8.18。

不幸的是,CMake-hdf5-1.8.18歸檔中缺少VS 2010 x64生成器。只有蝙蝠對VS 2012年,2013年和2015年是可能的,雖然添加其他發電機文件:

從HDF5下載網站
  1. 下載CMake的存檔,即從this網站。確保採取您想要安裝的版本。
  2. 打開文件HDF5config.cmake
  3. 搜索CTEST_CMAKE_GENERATOR
  4. 您所需的發電機添加另一個elseif,即對於Visual Studio 2010的64: 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

之後,在我改變了原來的問題所示的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})