SparkFindQt6Config.cmake 4.3 KB

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