# qt build
## qmake.conf
```
export PATH=/opt/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin:$PATH
```
- `qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf`
```
#
# qmake configuration for building with aarch64-linux-gnu-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = aarch64-none-linux-gnu-gcc
QMAKE_CXX = aarch64-none-linux-gnu-g++
QMAKE_LINK = aarch64-none-linux-gnu-g++
QMAKE_LINK_SHLIB = aarch64-none-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR = aarch64-none-linux-gnu-ar cqs
QMAKE_OBJCOPY = aarch64-none-linux-gnu-objcopy
QMAKE_NM = aarch64-none-linux-gnu-nm -P
QMAKE_STRIP = aarch64-none-linux-gnu-strip
load(qt_config)
```
## configure options
- `-xplatform`
使用自定义的mkspec (qtbase/mkspecs/)
- `-skip `
`-skip ` 的 `
在 `Qt` 源码根目录下执行:
```bash
ls -d qt*/
```
示例输出
```bash
qt3d/ qtcanvas3d/ qtdeclarative/ qtimageformats/ qtnetworkauth/ qtremoteobjects/ qtserialbus/ qttools/ qtwebchannel/ qtwebview/
qtactiveqt/ qtcharts/ qtdoc/ qtlocation/ qtpurchasing/ qtscript/ qtserialport/ qttranslations/ qtwebengine/ qtwinextras/
qtandroidextras/ qtconnectivity/ qtgamepad/ qtmacextras/ qtquickcontrols/ qtscxml/ qtspeech/ qtvirtualkeyboard/ qtwebglplugin/ qtx11extras/
qtbase/ qtdatavis3d/ qtgraphicaleffects/ qtmultimedia/ qtquickcontrols2/ qtsensors/ qtsvg/ qtwayland/ qtwebsockets/ qtxmlpatterns/
```
| 仓库名 | 功能说明 | 嵌入式建议 |
| ---------------------------------------- | --------------------------------------------------- | -------------------------- |
| **qtbase/** | Qt 核心库,包括 GUI、核心类、事件循环、网络、线程、QtCore、QtGui、QtWidgets | ✅ 必须 |
| **qtdeclarative/** | QML / Qt Quick 引擎 | ✅ 必须(界面开发) |
| **qtquickcontrols/** | Qt Quick Controls 1(老版控件库) | ⚙️ 可选,一般用 qtquickcontrols2 |
| **qtquickcontrols2/** | Qt Quick Controls 2(现代 QML 控件库) | ✅ 推荐 |
| **qtsvg/** | SVG 渲染支持 | ⚙️ 推荐,如果界面需要 SVG 图标 |
| **qttools/** | Qt 工具,如 `lrelease`, `moc`, `rcc` 等 | ✅ 需要工具编译 |
| **qtmultimedia/** | 音视频、摄像头、音频播放接口 | ⚙️ 按需启用 |
| **qtserialport/** | 串口支持 | ✅ 嵌入式常用 |
| **qtserialbus/** | 串口总线(CAN/Modbus 等) | ⚙️ 可选 |
| **qtsensors/** | 传感器接口(加速度计、陀螺仪等) | ⚙️ 按需启用 |
| **qtconnectivity/** | 蓝牙、NFC、网络连接管理 | ⚙️ 可选 |
| **qtgamepad/** | 游戏手柄接口 | ❌ 嵌入式一般不启用 |
| **qt3d/** | 3D 图形和场景管理 | ❌ 一般不启用 |
| **qtdatavis3d/** | 3D 数据可视化 | ❌ 一般不启用 |
| **qtcharts/** | 2D 图表控件 | ⚙️ 按需启用 |
| **qtpositioning/** (在 5.12.12 有时叫 gypsy) | 地理定位 | ⚙️ 按需启用 |
| **qtlocation/** | 地图和位置服务 | ❌ 嵌入式一般不启用 |
| **qtwebengine/** | Chromium 内核,浏览器组件 | ❌ 太大,不推荐嵌入式使用 |
| **qtwebview/** | 简单 WebView 组件 | ❌ 嵌入式一般不启用 |
| **qtwebchannel/** | QML/JS 与 C++ 通信 | ⚙️ 按需启用 |
| **qtwebsockets/** | WebSocket 支持 | ⚙️ 按需启用 |
| **qtwebglplugin/** | QtQuick → WebGL 导出插件 | ❌ 嵌入式一般不启用 |
| **qtwinextras/** | Windows 特定接口 | ❌ 跳过 |
| **qtmacextras/** | macOS 特定接口 | ❌ 跳过 |
| **qtandroidextras/** | Android 特定接口 | ❌ 跳过(RK3588 Linux 不用) |
| **qtscxml/** | SCXML 状态机支持 | ⚙️ 可选 |
| **qtscript/** | QtScript 脚本支持 | ⚙️ 可选,Qt5 已被废弃 |
| **qtpurchasing/** | 商店购买 API | ❌ 跳过 |
| **qtdoc/** | 官方文档 | ❌ 跳过 |
| **qttranslations/** | 国际化文件 | ⚙️ 可选 |
| **qtgraphicaleffects/** | QML 图形效果(阴影、模糊等) | ⚙️ 推荐 |
| **qtimageformats/** | PNG/JPG/TIFF/WebP 等图片格式插件 | ✅ 必须 |
| **qtvirtualkeyboard/** | 虚拟键盘 | ⚙️ 如果嵌入式需要屏幕键盘启用 |
| **qtxmlpatterns/** | XPath/XQuery/Xml schema 支持 | ⚙️ 按需启用 |
| **qtcanvas3d/** | WebGL 风格 3D Canvas(QtQuick3D 的前身) | ❌ 一般不启用 |
| **qtactiveqt/** | COM / ActiveX 接口(Windows) | ❌ 跳过 |
| **qtnetworkauth/** | OAuth 网络认证 | ⚙️ 按需启用 |
| **qtremoteobjects/** | 分布式对象同步(网络共享对象) | ⚙️ 可选 |
| **qtspeech/** | TTS / 语音 | ⚙️ 按需启用 |
| **qtx11extras/** | X11 平台扩展 | ⚙️ 仅 X11 平台用 |
| **qtwayland/** | Wayland 平台支持 | ⚙️ 嵌入式可启用(Wayland 后端) |