CMakeLists.txt 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. cmake_minimum_required(VERSION 2.8)
  2. project(HDF4CPP)
  3. list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
  4. set(CMAKE_CXX_STANDARD 11)
  5. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  6. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  7. find_package(HDF4 REQUIRED)
  8. find_package(Doxygen)
  9. if (DOXYGEN_FOUND)
  10. configure_file(Doxyfile_user.in ${PROJECT_BINARY_DIR}/Doxyfile_user @ONLY IMMEDIATE)
  11. add_custom_target(docs_user
  12. COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile_user
  13. SOURCES ${PROJECT_BINARY_DIR}/Doxyfile_user
  14. )
  15. configure_file(Doxyfile_all.in ${PROJECT_BINARY_DIR}/Doxyfile_all @ONLY IMMEDIATE)
  16. add_custom_target(docs_all
  17. COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile_all
  18. SOURCES ${PROJECT_BINARY_DIR}/Doxyfile_all
  19. )
  20. else ()
  21. message(WARNING "Doxygen not found")
  22. endif ()
  23. add_library(hdf4cpp
  24. lib/HdfFile.cpp
  25. lib/HdfItem.cpp
  26. lib/HdfAttribute.cpp
  27. lib/HdfException.cpp
  28. include/hdf4cpp/HdfObject.h
  29. include/hdf4cpp/HdfAttribute.h
  30. include/hdf4cpp/HdfAttribute_priv.h
  31. include/hdf4cpp/HdfException.h
  32. include/hdf4cpp/HdfFile.h
  33. include/hdf4cpp/HdfItem.h
  34. include/hdf4cpp/HdfDefines.h
  35. )
  36. target_include_directories(hdf4cpp
  37. PUBLIC
  38. include/
  39. ${HDF4_INCLUDE_DIRS}
  40. )
  41. target_link_libraries(hdf4cpp
  42. ${HDF4_LIBRARIES}
  43. )
  44. if (MSVC)
  45. target_compile_definitions(hdf4cpp PUBLIC
  46. NEEDS_NORETURN
  47. )
  48. endif ()
  49. enable_testing()
  50. find_package(GTest REQUIRED)
  51. find_package(Threads REQUIRED)
  52. add_executable(hdf4cpp-tests
  53. tests/HdfFileTest.cpp)
  54. target_include_directories(hdf4cpp-tests
  55. PRIVATE
  56. ${GTEST_INCLUDE_DIRS}
  57. )
  58. target_link_libraries(hdf4cpp-tests
  59. ${GTEST_BOTH_LIBRARIES}
  60. ${CMAKE_THREAD_LIBS_INIT}
  61. hdf4cpp
  62. )
  63. target_compile_definitions(hdf4cpp-tests PRIVATE
  64. GTEST_DONT_DEFINE_FAIL
  65. GTEST_DONT_DEFINE_SUCCEED)
  66. if (NOT DEFINED TEST_DATA_PATH)
  67. set(TEST_DATA_PATH "${PROJECT_SOURCE_DIR}/tests/test_data/")
  68. message(STATUS "No path to test data defined, using ${TEST_DATA_PATH} as default")
  69. endif ()
  70. target_compile_definitions(hdf4cpp-tests PRIVATE
  71. "TEST_DATA_PATH=\"${TEST_DATA_PATH}\"")
  72. add_test(
  73. NAME hdf4cpp
  74. COMMAND hdf4cpp-tests --gtest_output=xml:${PROJECT_BINARY_DIR}/test_details.xml
  75. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} # we need the serialized test data for the integration test
  76. )
  77. add_subdirectory(examples)