No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

122 líneas
6.3 KiB

  1. # Initialize ######################################################################################
  2. Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
  3. Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
  4. Include ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS )
  5. Find_Package ( cppcore QUIET )
  6. If ( cppcore )
  7. Set ( CPPLOGGING_HAS_CPPCORE true )
  8. EndIf ( )
  9. Find_Package ( nlohmann_json QUIET )
  10. If ( nlohmann_json_FOUND )
  11. Set ( CPPLOGGING_HAS_NLOHMANN_JSON true )
  12. EndIf ( )
  13. # Object Library ##################################################################################
  14. Set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
  15. Set ( CPPLOGGING_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
  16. Set ( CPPLOGGING_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include )
  17. Configure_File ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in
  18. ${CPPLOGGING_GENERATED_INCLUDE_DIR}/cpplogging/config.h )
  19. File ( GLOB_RECURSE CPPLOGGING_HEADER_FILES ${CPPLOGGING_INCLUDE_DIR}/*.h )
  20. File ( GLOB_RECURSE CPPLOGGING_INLINE_FILES ${CPPLOGGING_INCLUDE_DIR}/*.inl )
  21. File ( GLOB_RECURSE CPPLOGGING_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
  22. Add_Library ( cpplogging-objects
  23. OBJECT
  24. ${CPPLOGGING_HEADER_FILES}
  25. ${CPPLOGGING_INLINE_FILES}
  26. ${CPPLOGGING_SOURCE_FILES} )
  27. If ( CPPLOGGING_HAS_NLOHMANN_JSON )
  28. Target_Link_Libraries ( cpplogging-objects
  29. PRIVATE
  30. nlohmann_json::nlohmann_json )
  31. EndIf ( )
  32. Target_Include_Directories ( cpplogging-objects
  33. PUBLIC
  34. $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
  35. $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
  36. $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
  37. # Static Library ##################################################################################
  38. Add_Library ( cpplogging-static STATIC $<TARGET_OBJECTS:cpplogging-objects> )
  39. Set_Target_Properties ( cpplogging-static
  40. PROPERTIES
  41. OUTPUT_NAME "${CPPLOGGING_OUTPUTNAME}"
  42. VERSION ${CPPLOGGING_VERSION} )
  43. Target_Include_Directories ( cpplogging-static
  44. PUBLIC
  45. $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
  46. $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
  47. $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
  48. # Shared Library ##################################################################################
  49. Add_Library ( cpplogging-shared SHARED $<TARGET_OBJECTS:cpplogging-objects> )
  50. Set_Target_Properties ( cpplogging-shared
  51. PROPERTIES
  52. OUTPUT_NAME "${CPPLOGGING_OUTPUTNAME}"
  53. VERSION ${CPPLOGGING_VERSION}
  54. SOVERSION ${CPPLOGGING_VERSION_SHORT} )
  55. Target_Include_Directories ( cpplogging-shared
  56. PUBLIC
  57. $<BUILD_INTERFACE:${CPPLOGGING_INCLUDE_DIR}>
  58. $<BUILD_INTERFACE:${CPPLOGGING_GENERATED_INCLUDE_DIR}>
  59. $<INSTALL_INTERFACE:${CPPLOGGING_INSTALL_DIR_INCLUDE}> )
  60. # Optimization ####################################################################################
  61. # pedantic
  62. If ( HAS_PEDANTIC )
  63. Pedantic_Apply_Flags_Target ( cpplogging-objects ALL )
  64. Pedantic_Apply_Flags_Target ( cpplogging-static ALL )
  65. Pedantic_Apply_Flags_Target ( cpplogging-shared ALL )
  66. EndIf ( )
  67. # cotire
  68. If ( HAS_COTIRE )
  69. Cotire ( cpplogging-objects )
  70. Cotire ( cpplogging-static )
  71. Cotire ( cpplogging-shared )
  72. EndIf ( )
  73. # Install #########################################################################################
  74. Set ( CPPLOGGING_HAS_EXPORT False PARENT_SCOPE )
  75. # Header
  76. If ( CPPLOGGING_INSTALL_HEADER )
  77. Install ( DIRECTORY ${CPPLOGGING_INCLUDE_DIR}/cpplogging
  78. DESTINATION ${CPPLOGGING_INSTALL_DIR_INCLUDE} )
  79. Install ( DIRECTORY ${CPPLOGGING_GENERATED_INCLUDE_DIR}/cpplogging
  80. DESTINATION ${CPPLOGGING_INSTALL_DIR_INCLUDE} )
  81. EndIf ( )
  82. # Static
  83. If ( CPPLOGGING_INSTALL_STATIC )
  84. Set ( CPPLOGGING_HAS_EXPORT True PARENT_SCOPE )
  85. Install ( TARGETS cpplogging-static
  86. EXPORT cpplogging
  87. DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
  88. EndIf ( )
  89. # Shared
  90. If ( CPPLOGGING_INSTALL_SHARED )
  91. Set ( CPPLOGGING_HAS_EXPORT True PARENT_SCOPE )
  92. Install ( TARGETS cpplogging-shared
  93. EXPORT cpplogging
  94. DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
  95. EndIf ( )
  96. # Debug
  97. If ( HAS_STRIP_SYMBOLS AND NOT CPPLOGGING_NO_STRIP )
  98. Strip_Symbols ( cpplogging-shared CPPLOGGING_DBG_FILE )
  99. If ( CPPLOGGING_INSTALL_DEBUG )
  100. Install ( FILES ${CPPLOGGING_DBG_FILE}
  101. DESTINATION ${CPPLOGGING_INSTALL_DIR_LIB} )
  102. EndIf ( )
  103. EndIf ( )