# 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 后端) |