SparkFindQt5Config.cmake 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. cmake_minimum_required(VERSION 3.5.1)
  2. set(SPARK_FIND_QT5 TRUE)
  3. set(CMAKE_AUTOMOC ON)
  4. set(CMAKE_AUTOUIC ON)
  5. set(CMAKE_AUTORCC ON)
  6. find_package(Qt5 COMPONENTS Core Widgets Network REQUIRED)
  7. # function(target_link_qt5 NAME)
  8. # target_link_libraries(${NAME}
  9. # Qt5::Core
  10. # Qt5::Widgets
  11. # Qt5::Network)
  12. # endfunction(target_link_qt5 NAME)
  13. # 使用 spark_add_link 生成 target_link_qt5 以替代上面内容
  14. spark_add_link(qt5 Qt5::Core Qt5::Widgets Qt5::Network)
  15. # spark_add_link_qt5
  16. # 自定义宏 spark_add_link_qt5 以扩展 target_link_qt5_<name> 结构
  17. # _IN_NAME: 此宏使用嵌套宏 spark_add_link 时追加 <name> 名称
  18. # 同等于 spark_add_link(qt_<name> ${ARGN})
  19. macro(spark_add_link_qt5 _IN_NAME)
  20. spark_add_link(qt5_${_IN_NAME} ${ARGN})
  21. spark_add_link(qt_${_IN_NAME} ${ARGN})
  22. endmacro(spark_add_link_qt5 _IN_NAME)
  23. # 使用 spark_add_link_qt5 生成 target_link_qt5_<name> 的宏
  24. # spark_add_link_qt5(Concurrent Qt5::Concurrent)
  25. # 高级自定义
  26. # spark_add_links_qt5
  27. # 自定义宏 spark_add_links_qt5 以扩展 spark_add_link_qt5 宏配置组
  28. # 特点: 任意长度参数
  29. # qt5_item: 为进行遍历后的单项,类似于 python3 中的 (for item in items:)
  30. # 例如: qt5_item 为 Core:
  31. # spark_add_link_qt5(${qt5_item} Qt5::${qt5_item})
  32. # 展开为 spark_add_link_qt5(Core Qt5::Core)
  33. # 展开为 spark_add_link(qt5_Core Qt5::Core)
  34. # 展开为 spark_add_link(qt5_Core Qt5::Core)
  35. # 特性: 增加 qt5_Core 转 qt5_core
  36. # string(TOLOWER <string> <output_variable>)
  37. macro(spark_add_links_qt5)
  38. set(qt5_items ${ARGN})
  39. foreach(qt5_item IN LISTS qt5_items)
  40. find_package(Qt5${qt5_item})
  41. spark_add_link_qt5(${qt5_item} Qt5::${qt5_item})
  42. string(TOLOWER "${qt5_item}" qt5_lower_item)
  43. spark_add_link_qt5(${qt5_lower_item} Qt5::${qt5_item})
  44. spark_debug_message("add_target_link_qt5_${qt5_item} or add_target_link_qt5_${qt5_lower_item}")
  45. endforeach(qt5_item IN LISTS qt5_items)
  46. endmacro(spark_add_links_qt5)
  47. # Core 用于其它模块的核心非图形类。
  48. # GUI 图形用户界面 GUI 组件基类。包括 OpenGL。
  49. # Multimedia 音频 视频 无线电 摄像头功能类。
  50. # Multimedia Widgets 用于实现多媒体功能,基于 Widget 的类。
  51. # Network 使网络编程更容易和更可移植的类。
  52. # QML QML 和 JavaScript 语言类。
  53. # Quick 以自定义用户界面 UI 构建高动态应用程序的声明性框架。
  54. # Quick Controls 为桌面、嵌入式及移动设备创建高性能用户界面提供轻量 QML 类型。这些类型运用简单样式化体系结构且非常高效。
  55. # Quick Dialogs 用于从 Qt Quick 应用程序创建系统对话框,并与之交互的类型。
  56. # Quick Layouts 布局是用于在用户界面中排列基于 Qt Quick 2 项的项。
  57. # Quick Test 用于 QML 应用程序的单元测试框架,其测试案例被编写成 JavaScript 函数。
  58. # 注意: 二进制保证不兼容 Qt Quick Test,但源代码仍兼容。
  59. # Qt SQL 集成使用 SQL 数据库的类。
  60. # Qt Test 单元测试 Qt 应用程序和库的类。
  61. # 注意: 二进制保证不兼容 Qt Test,但源代码仍兼容。
  62. # Qt Widgets 以 C++ 小部件扩展 Qt GUI 的类。
  63. # 找出所有 Qt5 模板
  64. # find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt5@Qt5@;' | grep ^Qt5
  65. # 掐头去尾,洗一次
  66. # find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt5@Qt5@;' | grep ^Qt5 | sed 's@^Qt5@@; [email protected]$@@; /^\s*$/d'
  67. # 排序
  68. # 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
  69. spark_add_links_qt5(
  70. # AccessibilitySupport
  71. # AttributionsScannerTools
  72. Concurrent
  73. # Core
  74. # DBus
  75. # Designer
  76. # DesignerComponents
  77. # DeviceDiscoverySupport
  78. # DocTools
  79. # EdidSupport
  80. # EglFSDeviceIntegration
  81. # EglFsKmsSupport
  82. # EglSupport
  83. # EventDispatcherSupport
  84. # FbSupport
  85. # FontDatabaseSupport
  86. # GlxSupport
  87. Gui
  88. # Help
  89. # InputSupport
  90. # KmsSupport
  91. # LinguistTools
  92. # LinuxAccessibilitySupport
  93. # Network
  94. # OpenGL
  95. # OpenGLExtensions
  96. # PacketProtocol
  97. # PlatformCompositorSupport
  98. # Positioning
  99. # PositioningQuick
  100. PrintSupport
  101. # Qml
  102. # QmlDebug
  103. # QmlDevTools
  104. # QmlImportScanner
  105. # QmlModels
  106. # QmlWorkerScript
  107. # Quick
  108. # QuickCompiler
  109. # QuickControls2
  110. # QuickParticles
  111. # QuickShapes
  112. # QuickTemplates2
  113. # QuickTest
  114. # QuickWidgets
  115. # SerialBus
  116. # SerialPort
  117. # ServiceSupport
  118. # Sql
  119. # Svg
  120. # Test
  121. # ThemeSupport
  122. # UiPlugin
  123. # UiTools
  124. # VulkanSupport
  125. # WebChannel
  126. # WebEngine
  127. # WebEngineCore
  128. # WebEngineWidgets
  129. # WebKit
  130. # WebKitWidgets
  131. # WebSockets
  132. # Widgets
  133. # X11Extras
  134. # XcbQpa
  135. # XkbCommonSupport
  136. # Xml
  137. XmlPatterns
  138. )