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.
 
 
 
 

97 líneas
5.1 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. # Object Library ##################################################################################
  6. Set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
  7. Set ( LIBHELLOWORLD_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
  8. File ( GLOB_RECURSE LIBHELLOWORLD_HEADER_FILES ${LIBHELLOWORLD_INCLUDE_DIR}/*.h )
  9. File ( GLOB_RECURSE LIBHELLOWORLD_INLINE_FILES ${LIBHELLOWORLD_INCLUDE_DIR}/*.inl )
  10. File ( GLOB_RECURSE LIBHELLOWORLD_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
  11. Add_Library ( libhelloworld-objects
  12. OBJECT
  13. ${LIBHELLOWORLD_HEADER_FILES}
  14. ${LIBHELLOWORLD_INLINE_FILES}
  15. ${LIBHELLOWORLD_SOURCE_FILES} )
  16. Target_Include_Directories ( libhelloworld-objects
  17. PUBLIC
  18. $<BUILD_INTERFACE:${LIBHELLOWORLD_INCLUDE_DIR}>
  19. $<INSTALL_INTERFACE:${LIBHELLOWORLD_INSTALL_DIR_INCLUDE}> )
  20. # Static Library ##################################################################################
  21. Add_Library ( libhelloworld-static STATIC $<TARGET_OBJECTS:libhelloworld-objects> )
  22. Set_Target_Properties ( libhelloworld-static
  23. PROPERTIES
  24. OUTPUT_NAME "${LIBHELLOWORLD_OUTPUTNAME}"
  25. VERSION ${LIBHELLOWORLD_VERSION} )
  26. Target_Include_Directories ( libhelloworld-static
  27. PUBLIC
  28. $<BUILD_INTERFACE:${LIBHELLOWORLD_INCLUDE_DIR}>
  29. $<INSTALL_INTERFACE:${LIBHELLOWORLD_INSTALL_DIR_INCLUDE}> )
  30. # Shared Library ##################################################################################
  31. Add_Library ( libhelloworld-shared SHARED $<TARGET_OBJECTS:libhelloworld-objects> )
  32. Set_Target_Properties ( libhelloworld-shared
  33. PROPERTIES
  34. OUTPUT_NAME "${LIBHELLOWORLD_OUTPUTNAME}"
  35. VERSION ${LIBHELLOWORLD_VERSION}
  36. SOVERSION ${LIBHELLOWORLD_VERSION_SHORT} )
  37. Target_Include_Directories ( libhelloworld-shared
  38. PUBLIC
  39. $<BUILD_INTERFACE:${LIBHELLOWORLD_INCLUDE_DIR}>
  40. $<INSTALL_INTERFACE:${LIBHELLOWORLD_INSTALL_DIR_INCLUDE}> )
  41. # Optimization ####################################################################################
  42. # pedantic
  43. If ( HAS_PEDANTIC )
  44. Pedantic_Apply_Flags_Target ( libhelloworld-objects ALL )
  45. Pedantic_Apply_Flags_Target ( libhelloworld-static ALL )
  46. Pedantic_Apply_Flags_Target ( libhelloworld-shared ALL )
  47. EndIf ( )
  48. # cotire
  49. If ( HAS_COTIRE )
  50. Cotire ( libhelloworld-objects )
  51. Cotire ( libhelloworld-static )
  52. Cotire ( libhelloworld-shared )
  53. EndIf ( )
  54. # Install #########################################################################################
  55. # Header
  56. If ( LIBHELLOWORLD_INSTALL_HEADER )
  57. Install ( FILES ${LIBHELLOWORLD_INCLUDE_DIR}/libhelloworld.h
  58. DESTINATION ${LIBHELLOWORLD_INSTALL_DIR_INCLUDE} )
  59. Install ( DIRECTORY ${LIBHELLOWORLD_INCLUDE_DIR}/libhelloworld
  60. DESTINATION ${LIBHELLOWORLD_INSTALL_DIR_INCLUDE} )
  61. EndIf ( )
  62. # Static
  63. If ( LIBHELLOWORLD_INSTALL_STATIC )
  64. Install ( TARGETS libhelloworld-static
  65. EXPORT libhelloworld
  66. DESTINATION ${LIBHELLOWORLD_INSTALL_DIR_LIB} )
  67. EndIf ( )
  68. # Shared
  69. If ( LIBHELLOWORLD_INSTALL_SHARED )
  70. Install ( TARGETS libhelloworld-shared
  71. EXPORT libhelloworld
  72. DESTINATION ${LIBHELLOWORLD_INSTALL_DIR_LIB} )
  73. EndIf ( )
  74. # Debug
  75. If ( HAS_STRIP_SYMBOLS AND NOT LIBHELLOWORLD_NO_STRIP )
  76. Strip_Symbols ( libhelloworld-shared LIBHELLOWORLD_DBG_FILE )
  77. If ( LIBHELLOWORLD_INSTALL_DEBUG )
  78. Install ( FILES ${LIBHELLOWORLD_DBG_FILE}
  79. DESTINATION ${LIBHELLOWORLD_INSTALL_DIR_LIB} )
  80. EndIf ( )
  81. EndIf ( )