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 平台的内容作为参考。

注意:虽然所有支持的平台名称中都已附加有 baremetalfreertos,但平台名称中不必包含其中任何一个。

项目结构

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 许可证。
了解更多信息。