CMakeLists.txt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. cmake_minimum_required(VERSION 3.0.0)
  2. cmake_policy(SET CMP0069 NEW)
  3. project(HDF4CPP LANGUAGES CXX)
  4. list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
  5. set(CMAKE_CXX_STANDARD 11)
  6. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  7. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  8. find_package(HDF4 REQUIRED)
  9. find_package(Doxygen)
  10. if (DOXYGEN_FOUND)
  11. configure_file(Doxyfile_user.in ${PROJECT_BINARY_DIR}/Doxyfile_user @ONLY IMMEDIATE)
  12. add_custom_target(docs_user
  13. COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile_user
  14. SOURCES ${PROJECT_BINARY_DIR}/Doxyfile_user
  15. )
  16. configure_file(Doxyfile_all.in ${PROJECT_BINARY_DIR}/Doxyfile_all @ONLY IMMEDIATE)
  17. add_custom_target(docs_all
  18. COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile_all
  19. SOURCES ${PROJECT_BINARY_DIR}/Doxyfile_all
  20. )
  21. else ()
  22. message(WARNING "Doxygen not found")
  23. endif ()
  24. set(HEADERS
  25. include/hdf4cpp/hdf.h
  26. include/hdf4cpp/HdfObject.h
  27. include/hdf4cpp/HdfAttribute.h
  28. include/hdf4cpp/HdfException.h
  29. include/hdf4cpp/HdfFile.h
  30. include/hdf4cpp/HdfItem.h
  31. include/hdf4cpp/HdfDefines.h)
  32. add_library(hdf4cpp
  33. lib/HdfFile.cpp
  34. lib/HdfItem.cpp
  35. lib/HdfAttribute.cpp
  36. lib/HdfException.cpp
  37. ${HEADERS}
  38. )
  39. target_include_directories(hdf4cpp
  40. PUBLIC
  41. include/
  42. ${HDF4_INCLUDE_DIRS}
  43. )
  44. target_link_libraries(hdf4cpp
  45. ${HDF4_LIBRARIES}
  46. )
  47. if (MSVC)
  48. target_compile_definitions(hdf4cpp PUBLIC
  49. NEEDS_NORETURN
  50. )
  51. endif ()
  52. option(HDF4CPP_BUILD_TESTS "Enable building tests" ON)
  53. option(HDF4CPP_BUILD_EXAMPLES "Enable building examples" ON)
  54. if (HDF4CPP_BUILD_TESTS)
  55. add_subdirectory(tests)
  56. endif()
  57. if (HDF4CPP_BUILD_EXAMPLES)
  58. add_subdirectory(examples)
  59. endif()
  60. install(TARGETS hdf4cpp DESTINATION lib)
  61. install(FILES ${HEADERS}
  62. DESTINATION "include/hdf4cpp"
  63. )