Hi list, pasted below a snippet I use in a project of mine to handle HDF5 library. The purpose is to improve detection of required library zlib and szip in cases when the HDF5_C_COMPILER_EXECUTABLE is not available e.g. when one try to use pre-build HDF5 libraries on win32. The snippet also adds an option (WIN32 only) to set defines required by HDF5 dlls. This part could be further automated with some regexp (i suppose).
I'm not a cmake expert so I would like to receive some comment by users more expert than me. If the approach is correct I could try to submit a patch that integrates the snippet in the FindHDF5.cmake module. FIND_PACKAGE(HDF5 COMPONENTS CXX) IF(HDF5_FOUND) IF(NOT HDF5_C_COMPILER_EXECUTABLE) # Check if ${HDF5_LIBRARY} requires zlib and/or szlib library FIND_FILE(H5PUBCONF_H H5pubconf.h ${HDF5_INCLUDE_DIR}) IF(H5PUBCONF_H) MESSAGE(STATUS "H5PUBCONF_H: ${H5PUBCONF_H}") FILE(READ ${H5PUBCONF_H} H5CONFIG) STRING(REGEX MATCH "\n#define H5_HAVE_ZLIB_H" HDF5_NEEDS_ZLIB ${H5CONFIG}) STRING(REGEX MATCH "\n#define H5_HAVE_SZLIB_H" HDF5_NEEDS_SZLIB ${H5CONFIG}) ELSE(H5PUBCONF_H) MESSAGE(STATUS "No H5PUBCONF_H found.") ENDIF(H5PUBCONF_H) IF(HDF5_NEEDS_ZLIB) MESSAGE(STATUS "Testing if HDF5 needs zlib -- yes") FIND_PACKAGE(ZLIB REQUIRED) SET(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS}) SET(HDF5_LIBRARIES ${HDF5_LIBRARIES} ${ZLIB_LIBRARIES}) ELSE(HDF5_NEEDS_ZLIB) MESSAGE(STATUS "Testing if HDF5 needs zlib -- no") ENDIF(HDF5_NEEDS_ZLIB) IF(HDF5_NEEDS_SZLIB) MESSAGE(STATUS "Testing if HDF5 needs szip lib -- yes") FIND_PACKAGE(SZIP REQUIRED) SET(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_DIR} ${SZIP_INCLUDE_DIRS}) SET(HDF5_LIBRARIES ${HDF5_LIBRARIES} ${SZIP_LIBRARIES}) ELSE(HDF5_NEEDS_SZLIB) MESSAGE(STATUS "Testing if HDF5 needs szip lib -- no") ENDIF(HDF5_NEEDS_SZLIB) IF(WIN32) OPTION(HDF5_USE_DLL "Enable pre-processor macros for HDF5 DLLs." OFF) IF(HDF5_USE_DLL) ADD_DEFINITIONS(-D_HDF5USEDLL_ -DHDF5CPP_USEDLL -D_HDF5USEHLDLL_ -DHDF5USE_HLCPPDLL) ENDIF(HDF5_USE_DLL) ENDIF(WIN32) ENDIF(NOT HDF5_C_COMPILER_EXECUTABLE) INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIR}) LINK_DIRECTORIES(${HDF5_LIBRARY_DIRS}) ADD_DEFINITIONS(-DHAVE_HDF5) ENDIF(HDF5_FOUND) best regards -- Antonio Valentino _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake