package.cmake 2.3 KB

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