package.cmake 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #
  2. # Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  3. #
  4. # SPDX-License-Identifier: Apache-2.0 OR MIT
  5. #
  6. #
  7. include(CMakeParseArguments)
  8. include(CMakePackageConfigHelpers)
  9. set(CMAKE_CONFIGURATION_TYPES "debug;release")
  10. function(package_install)
  11. set(options)
  12. set(oneValueArgs NAME VERSION URL LICENSE LICENSE_FILE INCLUDE_SUBDIR DEBUG_LIB_SUFFIX)
  13. set(multiValueArgs)
  14. cmake_parse_arguments(PACKAGE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
  15. if(NOT PACKAGE_PLATFORM)
  16. set(PACKAGE_PLATFORM ${CMAKE_SYSTEM_NAME})
  17. if(PACKAGE_PLATFORM STREQUAL "Darwin")
  18. set(PACKAGE_PLATFORM Mac)
  19. endif()
  20. endif()
  21. string(TOLOWER ${PACKAGE_PLATFORM} PACKAGE_PLATFORM)
  22. configure_file(${CMAKE_CURRENT_FUNCTION_LIST_DIR}/PackageInfo.json.in ${CMAKE_CURRENT_BINARY_DIR}/PackageInfo.json @ONLY)
  23. configure_file(${CMAKE_CURRENT_FUNCTION_LIST_DIR}/FindPackageName.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/Find${PACKAGE_NAME}.cmake @ONLY)
  24. set(${PACKAGE_NAME}_INCLUDE_DIR include/${PACKAGE_INCLUDE_SUBDIR})
  25. set(${PACKAGE_NAME}_LIBS_DIR lib/$<IF:$<CONFIG:Debug>,debug,release>)
  26. configure_package_config_file(
  27. ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/PackageName-config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}-config.cmake"
  28. INSTALL_DESTINATION .
  29. PATH_VARS
  30. ${PACKAGE_NAME}_INCLUDE_DIR
  31. ${PACKAGE_NAME}_LIBS_DIR
  32. )
  33. write_basic_package_version_file(
  34. "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}-config-version.cmake"
  35. VERSION ${PACKAGE_VERSION}
  36. COMPATIBILITY ExactVersion
  37. )
  38. install(TARGETS ${PACKAGE_NAME}
  39. EXPORT 3rdParty::${PACKAGE_NAME} LIBRARY
  40. CONFIGURATIONS debug release
  41. ARCHIVE DESTINATION ${${PACKAGE_NAME}_LIBS_DIR}
  42. PUBLIC_HEADER DESTINATION ${${PACKAGE_NAME}_INCLUDE_DIR}
  43. )
  44. install(
  45. FILES
  46. ${PACKAGE_LICENSE_FILE}
  47. "${CMAKE_CURRENT_BINARY_DIR}/PackageInfo.json"
  48. "${CMAKE_CURRENT_BINARY_DIR}/Find${PACKAGE_NAME}.cmake"
  49. "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}-config.cmake"
  50. "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}-config-version.cmake"
  51. DESTINATION .
  52. )
  53. endfunction()