C
入门
在开始移植之前,请确保已满足 Qt Quick Ultralite 的所有前提条件。本指南中所有的示例都使用 CMake,因为 Qt Quick Ultralite 依赖于 CMake 构建系统。
本指南使用一个虚拟平台,example-baremetal
,作为移植步骤的示例。您可以基于此虚拟平台创建自己的平台移植,或者从头开始创建。
设置 Qt Quick Ultralite 平台移植项目
Qt Quick Ultralite 在 platform
目录下有所有支持的平台。所有平台都在 boards
子目录下,并按平台制造商的名称进行分类。例如,example-baremetal
平台移植的制造商是 Qt,移植可以在 platform\boards\qt\example-baremetal
中找到。
BOARD_MANUFACTURER_NAME 是由 qul_private_find_and_get_board_manufacturer_name
宏设置的变量。它用于在 boards
目录中搜索指定的平台,并返回包含指定移植的板目录。
为了使您的平台对 Qt Quick Ultralite 的 CMake 脚本可见,请为新平台创建一个新目录
mkdir platform/boards/<MANUFACTURER_NAME>/<YOUR_PLATFORM>
md platform\boards\<MANUFACTURER_NAME>\<YOUR_PLATFORM>
其中 <MANUFACTURER_NAME> 和 <YOUR_PLATFORM> 应使用小写名称以避免问题。
您必须在 <MANUFACTURER_NAME> 和 <YOUR_PLATFORM> 目录中都添加一个 CMakeLists.txt
文件。在 <YOUR_PLATFORM> 下的 CMakeLists.txt
由 创建平台配置文件 配置。在 <MANUFACTURER_NAME> 下的必须至少包含以下内容:
include(CMakeDependentOption) add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/${QUL_PLATFORM})
您还可以复制 example-baremetal
平台的内容作为参考。
注意:虽然所有支持的平台名称中都已附加有 baremetal
或 freertos
,但平台名称中不必包含其中任何一个。
项目结构
Qt Quick Ultralite 没有一个必须遵循的严格结构。但是,有一些事情必须在平台上存在并配置,以便能够在 Qt Quick Ultralite 的 CMake 脚本中编译。
cmake
目录
您的项目必须包含一个cmake
目录,其中包含用于Qt Quick Ultralite的平台识别和编译所需的编译器和板信息。您可以以platform\boards\qt\example-baremetal\cmake
目录为基础,创建您的平台cmake目录。请注意,example-baremetal
项目的cmake
目录包含ARM GCC编译器和IAR编译器的配置。如果您使用的是ARM GCC、Green Hills或IAR编译器之外的编译器,则需要额外的配置。有关更多信息,请参阅使用自定义工具链。
cmake目录具有以下结构
<YOUR_PLATFORM> |-cmake | |-<YOUR_COMPILER> | | |-platform.cmake | | |-<YOUR_PLATFORM>.json | | |-<YOUR_LINKER_SCRIPT> | |-BoardArchitectureConfig.cmake | |-BoardDefaults.qmlprojectconfig | |-BSPConfig.cmake | |-LinkerScriptConfig.cmake
为平台定义默认变量
如上图所示,平台的默认变量按照以下方式进行组织
BoardDefaults.qmlprojectconfig
包含针对目标板的Qt Quick Ultralite引擎特定配置。有关更多信息,请参阅QmlProject手册。BoardArchitectureConfig.cmake
包含平台架构信息。LinkerScriptConfig.cmake
包含链接器脚本配置。有关详细信息,请参阅添加你的链接器脚本。- 特定于平台的配置已移至平台的
CMakeLists.txt
文件。有关详细信息,请参阅设置平台属性
BoardDefaults.qmlprojectconfig
命名方案
平台移植可能包含多个BoardDefaults.qmlprojectconfig
文件,这些文件针对不同的板或显示配置。为了支持所有这些配置,请使用以下命名约定
BoardDefaults_<color_depth>bpp_<default>.qmlprojectconfig
其中:
- 将
color_depth
值设置为QUL_COLOR_DEPTH CMake变量。此值还用于根据平台cmake目录中存在的多个qmlprojectconfig文件确定可用配置的范围。 - 如果有多个配置,请使用其中一个配置的
default
关键字,以指示默认配置。
下表描述了不同的示例场景和相应的配置文件名
场景 | 行为 |
---|---|
只有一个BoardDefaults.qmlprojectconfig 文件存在。cmake |- BoardDefaults.qmlprojectconfig | 在这种情况下,如果color_depth 信息不是文件名的一部分,显式提供QUL_COLOR_DEPTH选项给CMake命令。 |
只有一个BoardDefaults_<color_depth>.qmlprojectconfig 文件存在。cmake |- BoardDefaults_32bpp.qmlprojectconfig | 当使用包含文件名中的color_depth 信息的配置时,不需要向CMake命令提供-DQUL_COLOR_DEPTH 选项。 |
存在多个BoardDefaults_<color_depth>.qmlprojectconfig 文件。没有任何一个使用default 关键字。cmake |- BoardDefaults_8bpp.qmlprojectconfig |- BoardDefaults_16bpp.qmlprojectconfig |- BoardDefaults_32bpp.qmlprojectconfig | 在这种情况下,如果多个qmlprojectconfig文件包含文件名中的color_depth 信息,则显式提供QUL_COLOR_DEPTH选项给CMake命令。 |
存在多个BoardDefaults_<color_depth>.qmlprojectconfig 文件。其中一个包含default 关键字。cmake |- BoardDefaults_8bpp_default.qmlprojectconfig |- BoardDefaults_16bpp.qmlprojectconfig |- BoardDefaults_32bpp.qmlprojectconfig | 如果其中一个配置包含文件名中的default 关键字,则它会自动选择。如果要显式选择不同的配置,请显式提供QUL_COLOR_DEPTH选项给CMake命令。 |
注意:如果qmlprojectconfig
文件未按照约定命名,则显式提供-DQUL_PLATFORM_BOARD_DEFAULTS_QMLPROJECTCONFIG=<path_to_qmlprojectconfig_file>
选项给CMake命令。
适用于某些 Qt 许可证。
了解更多信息。