SparkFindQt5Config.cmake 5.0 KB

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