You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

72 lines
4.1 KiB

  1. # Initialize CMake ################################################################################
  2. CMake_Minimum_Required ( VERSION 3.12.0 FATAL_ERROR )
  3. # Set CMAKE_BUILD_TYPE
  4. If ( NOT CMAKE_BUILD_TYPE )
  5. Set ( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build!" FORCE )
  6. EndIf ( NOT CMAKE_BUILD_TYPE )
  7. Set_Property ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel )
  8. # Set CMAKE_MODULE_PATH
  9. If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
  10. Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
  11. "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
  12. EndIf ( )
  13. If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
  14. Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
  15. "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" )
  16. EndIf ( )
  17. # Project #########################################################################################
  18. # Version
  19. Set ( LIBHELLOWORLD_VERSION_MAJOR 1 )
  20. Set ( LIBHELLOWORLD_VERSION_MINOR 0 )
  21. Set ( LIBHELLOWORLD_VERSION_PATCH 0 )
  22. Set ( LIBHELLOWORLD_VERSION_BUILD 0 )
  23. Set ( LIBHELLOWORLD_VERSION_SHORT "${LIBHELLOWORLD_VERSION_MAJOR}.${LIBHELLOWORLD_VERSION_MINOR}" )
  24. Set ( LIBHELLOWORLD_VERSION "${LIBHELLOWORLD_VERSION_SHORT}.${LIBHELLOWORLD_VERSION_PATCH}.${LIBHELLOWORLD_VERSION_BUILD}" )
  25. Set ( LIBHELLOWORLD_NAME "libhelloworld-${LIBHELLOWORLD_VERSION_SHORT}" )
  26. # Install directories
  27. Set ( LIBHELLOWORLD_INSTALL_DIR_INCLUDE "include/${LIBHELLOWORLD_NAME}" )
  28. Set ( LIBHELLOWORLD_INSTALL_DIR_LIB "lib/${LIBHELLOWORLD_NAME}" )
  29. Set ( LIBHELLOWORLD_INSTALL_DIR_SHARE "share/${LIBHELLOWORLD_NAME}" )
  30. # Project
  31. Project ( libhelloworld
  32. DESCRIPTION "A simple library"
  33. VERSION "${LIBHELLOWORLD_VERSION}" )
  34. Include ( CTest )
  35. # C Standard
  36. Set ( CMAKE_C_STANDARD 11 )
  37. Set ( CMAKE_CXX_STANDARD 17 )
  38. Set ( CMAKE_C_STANDARD_REQUIRED ON )
  39. Set ( CMAKE_CXX_STANDARD_REQUIRED ON )
  40. # Subdirectories
  41. Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
  42. Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/test )
  43. # Install
  44. Include ( CMakePackageConfigHelpers )
  45. Write_Basic_Package_Version_File ( "${CMAKE_CURRENT_BINARY_DIR}/cmake/libhelloworld-config-version.cmake"
  46. VERSION ${LIBHELLOWORLD_VERSION}
  47. COMPATIBILITY AnyNewerVersion )
  48. Configure_File ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/libhelloworld-config.cmake"
  49. "${CMAKE_CURRENT_BINARY_DIR}/cmake/libhelloworld-config.cmake"
  50. @ONLY )
  51. Set ( ConfigPackageLocation "${LIBHELLOWORLD_INSTALL_DIR_SHARE}/cmake" )
  52. Install ( EXPORT libhelloworld
  53. DESTINATION ${ConfigPackageLocation} )
  54. Install ( FILES
  55. "${CMAKE_CURRENT_BINARY_DIR}/cmake/libhelloworld-config.cmake"
  56. "${CMAKE_CURRENT_BINARY_DIR}/cmake/libhelloworld-config-version.cmake"
  57. DESTINATION
  58. ${ConfigPackageLocation}
  59. COMPONENT
  60. Devel )