CMakeLists.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #
  2. # Copyright Kitware, Inc.
  3. # Distributed under the OSI-approved BSD 3-Clause License.
  4. # See accompanying file Copyright.txt for details.
  5. #
  6. if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
  7. cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
  8. set(kwiml_standalone 1)
  9. project(KWIML)
  10. include(CTest)
  11. mark_as_advanced(BUILD_TESTING)
  12. if(BUILD_TESTING)
  13. set(KWIML_TEST_ENABLE 1)
  14. endif()
  15. if(NOT DEFINED KWIML_INSTALL_INCLUDE_DIR)
  16. set(KWIML_INSTALL_INCLUDE_DIR include)
  17. endif()
  18. set(KWIML_INCLUDE_PREFIX kwiml)
  19. else()
  20. cmake_minimum_required(VERSION 2.8.2 FATAL_ERROR)
  21. set(kwiml_standalone 0)
  22. if(KWIML_INSTALL_INCLUDE_DIR AND NOT DEFINED KWIML_INCLUDE_PREFIX)
  23. message(FATAL_ERROR "Host project must set KWIML_INCLUDE_PREFIX")
  24. endif()
  25. endif()
  26. get_property(KWIML_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
  27. foreach(lang ${KWIML_LANGUAGES})
  28. set(KWIML_LANGUAGE_${lang} 1)
  29. endforeach()
  30. if(NOT KWIML_LANGUAGE_C AND NOT KWIML_LANGUAGE_CXX)
  31. set(BUILD_TESTING OFF)
  32. endif()
  33. if(KWIML_INSTALL_INCLUDE_DIR)
  34. install(FILES
  35. include/kwiml/abi.h
  36. include/kwiml/int.h
  37. DESTINATION ${KWIML_INSTALL_INCLUDE_DIR}/${KWIML_INCLUDE_PREFIX}
  38. ${KWIML_INSTALL_INCLUDE_OPTIONS}
  39. )
  40. endif()
  41. if(KWIML_TEST_ENABLE)
  42. add_subdirectory(test)
  43. endif()
  44. if(NOT kwiml_standalone)
  45. return()
  46. endif()
  47. #----------------------------------------------------------------------------
  48. set(KWIML_VERSION 1.0.0)
  49. if(KWIML_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
  50. set(KWIML_VERSION_MAJOR "${CMAKE_MATCH_1}")
  51. set(KWIML_VERSION_MINOR "${CMAKE_MATCH_2}")
  52. set(KWIML_VERSION_PATCH "${CMAKE_MATCH_3}")
  53. math(EXPR KWIML_VERSION_DECIMAL
  54. "${KWIML_VERSION_MAJOR}*1000000 + ${KWIML_VERSION_MINOR}*1000 + ${KWIML_VERSION_PATCH}")
  55. else()
  56. message(FATAL_ERROR "Failed to parse KWIML_VERSION='${KWIML_VERSION}'")
  57. endif()
  58. configure_file(src/version.h.in include/kwiml/version.h @ONLY)
  59. install(FILES
  60. ${CMAKE_CURRENT_BINARY_DIR}/include/kwiml/version.h
  61. DESTINATION ${KWIML_INSTALL_INCLUDE_DIR}/kwiml
  62. )
  63. if(NOT KWIML_INSTALL_PACKAGE_DIR)
  64. set(KWIML_INSTALL_PACKAGE_DIR share/cmake/kwiml-${KWIML_VERSION_MAJOR}.${KWIML_VERSION_MINOR})
  65. endif()
  66. add_library(kwiml INTERFACE)
  67. target_include_directories(kwiml INTERFACE
  68. $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${KWIML_INSTALL_INCLUDE_DIR}>
  69. $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
  70. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  71. )
  72. export(TARGETS kwiml
  73. NAMESPACE kwiml::
  74. FILE kwiml-targets.cmake
  75. )
  76. install(TARGETS kwiml
  77. DESTINATION lib
  78. EXPORT kwiml-targets
  79. )
  80. install(EXPORT kwiml-targets
  81. NAMESPACE kwiml::
  82. DESTINATION ${KWIML_INSTALL_PACKAGE_DIR}
  83. )
  84. configure_file(src/kwiml-config.cmake.in kwiml-config.cmake @ONLY)
  85. include(CMakePackageConfigHelpers)
  86. write_basic_package_version_file(
  87. "${CMAKE_CURRENT_BINARY_DIR}/kwiml-config-version.cmake"
  88. VERSION ${KWIML_VERSION}
  89. COMPATIBILITY AnyNewerVersion
  90. )
  91. install(FILES
  92. ${CMAKE_CURRENT_BINARY_DIR}/kwiml-config.cmake
  93. ${CMAKE_CURRENT_BINARY_DIR}/kwiml-config-version.cmake
  94. DESTINATION ${KWIML_INSTALL_PACKAGE_DIR}
  95. )