SparkFindQt6Config.cmake 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. cmake_minimum_required(VERSION 3.5.1)
  2. set(SPARK_FIND_QT6 TRUE)
  3. find_package(Qt6 COMPONENTS Core Widgets Network REQUIRED)
  4. # function(target_link_qt6 NAME)
  5. # target_link_libraries(${NAME}
  6. # Qt6::Core
  7. # Qt6::Widgets
  8. # Qt6::Network)
  9. # endfunction(target_link_qt6 NAME)
  10. # 使用 spark_add_link 生成 target_link_qt6 以替代上面内容
  11. spark_add_link(qt6 Qt6::Core Qt6::Widgets Qt6::Network)
  12. # spark_add_link_qt6
  13. # 自定义宏 spark_add_link_qt6 以扩展 target_link_qt6_<name> 结构
  14. # _IN_NAME: 此宏使用嵌套宏 spark_add_link 时追加 <name> 名称
  15. # 同等于 spark_add_link(qt_<name> ${ARGN})
  16. macro(spark_add_link_qt6 _IN_NAME)
  17. spark_add_link(qt6_${_IN_NAME} ${ARGN})
  18. endmacro(spark_add_link_qt6 _IN_NAME)
  19. # 使用 spark_add_link_qt6 生成 target_link_qt6_<name> 的宏
  20. # spark_add_link_qt5(Concurrent Qt6::Concurrent)
  21. # 高级自定义
  22. # spark_add_links_qt6
  23. # 自定义宏 spark_add_links_qt6 以扩展 spark_add_link_qt6 宏配置组
  24. # 特点: 任意长度参数
  25. # qt6_item: 为进行遍历后的单项,类似于 python3 中的 (for item in items:)
  26. # 例如: qt6_item 为 Core:
  27. # spark_add_link_qt6(${qt6_item} Qt6::${qt6_item})
  28. # 展开为 spark_add_link_qt6(Core Qt6::Core)
  29. # 展开为 spark_add_link(qt6_Core Qt6::Core)
  30. # 展开为 spark_add_link(qt6_Core Qt6::Core)
  31. # 特性: 增加 qt6_Core 转 qt6_core
  32. # string(TOLOWER <string> <output_variable>)
  33. macro(spark_add_links_qt6)
  34. set(qt6_items ${ARGN})
  35. foreach(qt6_item IN LISTS qt6_items)
  36. find_package(Qt6${qt6_item})
  37. spark_add_link_qt6(${qt6_item} Qt6::${qt6_item})
  38. string(TOLOWER "${qt6_item}" qt6_lower_item)
  39. spark_add_link_qt6(${qt6_lower_item} Qt6::${qt6_item})
  40. spark_debug_message("add_target_link_qt6_${qt6_item} or add_target_link_qt6_${qt6_lower_item}")
  41. endforeach(qt6_item IN LISTS qt6_items)
  42. endmacro(spark_add_links_qt6)
  43. # 找出所有 Qt6 模板
  44. # find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt6@Qt6@;' | grep ^Qt6
  45. # 掐头去尾,洗一次
  46. # find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt5@Qt5@;' | grep ^Qt5 | sed 's@^Qt5@@; [email protected]$@@; /^\s*$/d'
  47. # 排序
  48. # find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt5@Qt5@;' | grep ^Qt5 | sed 's@^Qt5@@; [email protected]$@@; /^\s*$/d' | sort | pr -t -3
  49. # find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt6@Qt6@;' | grep ^Qt6 | sed 's@^Qt6@@; [email protected]$@@; /^\s*$/d' | sort | pr -t -3
  50. spark_add_links_qt6(
  51. # BuildInternals
  52. # BuildInternals/StandaloneTests/Qt5CompatTests
  53. # BuildInternals/StandaloneTests/QtBaseTests
  54. Concurrent
  55. # Core
  56. Core5Compat
  57. # CoreTools
  58. # DBus
  59. # DBusTools
  60. # DeviceDiscoverySupportPrivate
  61. # EglFSDeviceIntegrationPrivate
  62. # EglFsKmsGbmSupportPrivate
  63. # EglFsKmsSupportPrivate
  64. # FbSupportPrivate
  65. # Gui
  66. # GuiTools
  67. # HostInfo
  68. # InputSupportPrivate
  69. # KmsSupportPrivate
  70. # Network
  71. # OpenGL
  72. # OpenGLWidgets
  73. PrintSupport
  74. # QComposePlatformInputContextPlugin
  75. # QCupsPrinterSupportPlugin
  76. # QEglFSEmulatorIntegrationPlugin
  77. # QEglFSIntegrationPlugin
  78. # QEglFSKmsEglDeviceIntegrationPlugin
  79. # QEglFSKmsGbmIntegrationPlugin
  80. # QEglFSX11IntegrationPlugin
  81. # QEvdevKeyboardPlugin
  82. # QEvdevMousePlugin
  83. # QEvdevTabletPlugin
  84. # QEvdevTouchScreenPlugin
  85. # QGifPlugin
  86. # QGtk3ThemePlugin
  87. # QIBaseDriverPlugin
  88. # QIbusPlatformInputContextPlugin
  89. # QICOPlugin
  90. # QJpegPlugin
  91. # QLibInputPlugin
  92. # QLinuxFbIntegrationPlugin
  93. # QMinimalEglIntegrationPlugin
  94. # QMinimalIntegrationPlugin
  95. # QMYSQLDriverPlugin
  96. # QNetworkManagerNetworkInformationPlugin
  97. # QODBCDriverPlugin
  98. # QOffscreenIntegrationPlugin
  99. # QPSQLDriverPlugin
  100. # QSQLiteDriverPlugin
  101. # QTlsBackendCertOnlyPlugin
  102. # QTlsBackendOpenSSLPlugin
  103. # QTsLibPlugin
  104. # QTuioTouchPlugin
  105. # QVkKhrDisplayIntegrationPlugin
  106. # QVncIntegrationPlugin
  107. # QXcbEglIntegrationPlugin
  108. # QXcbGlxIntegrationPlugin
  109. # QXcbIntegrationPlugin
  110. # QXdgDesktopPortalThemePlugin
  111. # Sql
  112. # Test
  113. # Widgets
  114. # WidgetsTools
  115. # XcbQpaPrivate
  116. # Xml
  117. )