notepad--/cmake/SparkFindQt5Config.cmake

153 lines
5.0 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.5.1)
set(SPARK_FIND_QT5 TRUE)
find_package(Qt5 COMPONENTS Core Widgets Network REQUIRED)
# function(target_link_qt5 NAME)
# target_link_libraries(${NAME}
# Qt5::Core
# Qt5::Widgets
# Qt5::Network)
# endfunction(target_link_qt5 NAME)
# 使用 spark_add_link 生成 target_link_qt5 以替代上面内容
spark_add_link(qt5 Qt5::Core Qt5::Widgets Qt5::Network)
# spark_add_link_qt5
# 自定义宏 spark_add_link_qt5 以扩展 target_link_qt5_<name> 结构
# _IN_NAME: 此宏使用嵌套宏 spark_add_link 时追加 <name> 名称
# 同等于 spark_add_link(qt_<name> ${ARGN})
macro(spark_add_link_qt5 _IN_NAME)
spark_add_link(qt5_${_IN_NAME} ${ARGN})
endmacro(spark_add_link_qt5 _IN_NAME)
# 使用 spark_add_link_qt5 生成 target_link_qt5_<name> 的宏
# spark_add_link_qt5(Concurrent Qt5::Concurrent)
# 高级自定义
# spark_add_links_qt5
# 自定义宏 spark_add_links_qt5 以扩展 spark_add_link_qt5 宏配置组
# 特点: 任意长度参数
# qt5_item: 为进行遍历后的单项,类似于 python3 中的 (for item in items:)
# 例如: qt5_item 为 Core
# spark_add_link_qt5(${qt5_item} Qt5::${qt5_item})
# 展开为 spark_add_link_qt5(Core Qt5::Core)
# 展开为 spark_add_link(qt5_Core Qt5::Core)
# 展开为 spark_add_link(qt5_Core Qt5::Core)
# 特性: 增加 qt5_Core 转 qt5_core
# string(TOLOWER <string> <output_variable>)
macro(spark_add_links_qt5)
set(qt5_items ${ARGN})
foreach(qt5_item IN LISTS qt5_items)
find_package(Qt5${qt5_item})
spark_add_link_qt5(${qt5_item} Qt5::${qt5_item})
string(TOLOWER "${qt5_item}" qt5_lower_item)
spark_add_link_qt5(${qt5_lower_item} Qt5::${qt5_item})
message("add_target_link_qt5_${qt5_item} or add_target_link_qt5_${qt5_lower_item}")
endforeach(qt5_item IN LISTS qt5_items)
endmacro(spark_add_links_qt5)
# Core 用于其它模块的核心非图形类。
# GUI 图形用户界面 GUI 组件基类。包括 OpenGL。
# Multimedia 音频 视频 无线电 摄像头功能类。
# Multimedia Widgets 用于实现多媒体功能,基于 Widget 的类。
# Network 使网络编程更容易和更可移植的类。
# QML QML 和 JavaScript 语言类。
# Quick 以自定义用户界面 UI 构建高动态应用程序的声明性框架。
# Quick Controls 为桌面、嵌入式及移动设备创建高性能用户界面提供轻量 QML 类型。这些类型运用简单样式化体系结构且非常高效。
# Quick Dialogs 用于从 Qt Quick 应用程序创建系统对话框,并与之交互的类型。
# Quick Layouts 布局是用于在用户界面中排列基于 Qt Quick 2 项的项。
# Quick Test 用于 QML 应用程序的单元测试框架,其测试案例被编写成 JavaScript 函数。
# 注意: 二进制保证不兼容 Qt Quick Test但源代码仍兼容。
# Qt SQL 集成使用 SQL 数据库的类。
# Qt Test 单元测试 Qt 应用程序和库的类。
# 注意: 二进制保证不兼容 Qt Test但源代码仍兼容。
# Qt Widgets 以 C++ 小部件扩展 Qt GUI 的类。
# 找出所有 Qt5 模板
# find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt5@Qt5@;' | grep ^Qt5
# 掐头去尾,洗一次
# find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt5@Qt5@;' | grep ^Qt5 | sed 's@^Qt5@@; s@Config.cmake$@@; /^\s*$/d'
# 排序
# find /usr/lib/x86_64-linux-gnu/cmake/ -name "*Config.cmake" | sed 's@^.*/Qt5@Qt5@;' | grep ^Qt5 | sed 's@^Qt5@@; s@Config.cmake$@@; /^\s*$/d' | sort | pr -t -3
spark_add_links_qt5(
# AccessibilitySupport
# AttributionsScannerTools
Concurrent
# Core
# DBus
# Designer
# DesignerComponents
# DeviceDiscoverySupport
# DocTools
# EdidSupport
# EglFSDeviceIntegration
# EglFsKmsSupport
# EglSupport
# EventDispatcherSupport
# FbSupport
# FontDatabaseSupport
# GlxSupport
Gui
# Help
# InputSupport
# KmsSupport
# LinguistTools
# LinuxAccessibilitySupport
# Network
# OpenGL
# OpenGLExtensions
# PacketProtocol
# PlatformCompositorSupport
# Positioning
# PositioningQuick
PrintSupport
# Qml
# QmlDebug
# QmlDevTools
# QmlImportScanner
# QmlModels
# QmlWorkerScript
# Quick
# QuickCompiler
# QuickControls2
# QuickParticles
# QuickShapes
# QuickTemplates2
# QuickTest
# QuickWidgets
# SerialBus
# SerialPort
# ServiceSupport
# Sql
# Svg
# Test
# ThemeSupport
# UiPlugin
# UiTools
# VulkanSupport
# WebChannel
# WebEngine
# WebEngineCore
# WebEngineWidgets
# WebKit
# WebKitWidgets
# WebSockets
# Widgets
# X11Extras
# XcbQpa
# XkbCommonSupport
# Xml
XmlPatterns
)