printers.cmake 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. if (__cmake_printers_included)
  2. return ()
  3. endif ()
  4. set ( __cmake_printers_included YES )
  5. # different print diagnostic stuff
  6. #
  7. # diag - print one or many variables
  8. # diags - print message in DEBUG scope, if DIAGNOSTIC defined
  9. # infomsg - make message STATUS if not CMAKE_REQUIRED_QUIET
  10. # debugmsg - make message DEBUG
  11. # trace - traces target properties
  12. # diagst - promptly output if target found and where
  13. include ( CMakePrintHelpers )
  14. function ( DIAG )
  15. if (DIAGNOSTIC)
  16. cmake_print_variables ( ${ARGN} )
  17. endif ()
  18. endfunction ()
  19. function ( DIAGS MSG )
  20. if (DIAGNOSTIC)
  21. message ( DEBUG "${MSG}" )
  22. endif ()
  23. endfunction ()
  24. function ( infomsg MSG )
  25. if (NOT CMAKE_REQUIRED_QUIET)
  26. message ( STATUS "${MSG}" )
  27. endif ()
  28. endfunction ()
  29. function ( debugmsg MSG )
  30. message ( DEBUG "${MSG}" )
  31. endfunction ()
  32. function ( tracep LIB PROPERTY )
  33. get_property ( _prp TARGET ${LIB} PROPERTY ${PROPERTY} )
  34. if (_prp)
  35. diags ( "${PROPERTY} = '${_prp}'" )
  36. endif ()
  37. endfunction ()
  38. function ( trace LIB )
  39. if (NOT TARGET ${LIB})
  40. diags ( "=========== ${LIB} is not found" )
  41. return ()
  42. endif ()
  43. diags ( "=========== Trace properties for ${LIB} =============" )
  44. foreach (_prop
  45. TYPE
  46. INTERFACE_AUTOUIC_OPTIONS
  47. INTERFACE_COMPILE_DEFINITIONS
  48. INTERFACE_COMPILE_FEATURES
  49. INTERFACE_COMPILE_OPTIONS
  50. INTERFACE_INCLUDE_DIRECTORIES
  51. INTERFACE_LINK_LIBRARIES
  52. INTERFACE_LINK_DEPENDS
  53. INTERFACE_LINK_DIRECTORIES
  54. INTERFACE_LINK_OPTIONS
  55. INTERFACE_PRECOMPILE_HEADERS
  56. INTERFACE_POSITION_INDEPENDENT_CODE
  57. INTERFACE_SOURCES
  58. INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
  59. IMPORTED_CONFIGURATIONS
  60. IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG
  61. IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE
  62. IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO
  63. IMPORTED_LOCATION_DEBUG
  64. IMPORTED_LOCATION_RELEASE
  65. IMPORTED_LOCATION_RELWITHDEBINFO
  66. IMPORTED_LOCATION
  67. IMPORTED_IMPLIB_DEBUG
  68. IMPORTED_IMPLIB_RELEASE
  69. IMPORTED_IMPLIB_RELWITHDEBINFO
  70. IMPORTED_IMPLIB
  71. MAP_IMPORTED_CONFIG_DEBUG
  72. MAP_IMPORTED_CONFIG_RELEASE
  73. MAP_IMPORTED_CONFIG_RELWITHDEBINFO
  74. MAP_IMPORTED_CONFIG_MINSIZEREL
  75. DL_LIBRARY
  76. LOCATION
  77. )
  78. tracep ( ${LIB} ${_prop} )
  79. endforeach ()
  80. diags ( "=========== Trace properties for ${LIB} finished =============" )
  81. endfunction ()
  82. function ( trace_internal LIB )
  83. diags ( "=========== Trace properties for internal ${LIB} =============" )
  84. foreach (_prop
  85. TYPE
  86. INTERFACE_COMPILE_DEFINITIONS
  87. INTERFACE_COMPILE_FEATURES
  88. INTERFACE_COMPILE_OPTIONS
  89. INTERFACE_INCLUDE_DIRECTORIES
  90. INTERFACE_LINK_LIBRARIES
  91. INTERFACE_LINK_DEPENDS
  92. INTERFACE_LINK_DIRECTORIES
  93. INTERFACE_LINK_OPTIONS
  94. INTERFACE_PRECOMPILE_HEADERS
  95. INTERFACE_POSITION_INDEPENDENT_CODE
  96. INTERFACE_SOURCES
  97. INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
  98. )
  99. tracep ( ${LIB} ${_prop} )
  100. endforeach ()
  101. diags ( "=========== Trace properties for internal ${LIB} finished =============" )
  102. endfunction ()
  103. function ( diagst TRG LEGEND )
  104. if (TARGET ${TRG})
  105. get_target_property ( LOC ${TRG} LOCATION )
  106. diags ( "${TRG} ${LEGEND} at ${LOC}" )
  107. else ()
  108. diags ( "${TRG} is not found" )
  109. endif ()
  110. endfunction ()