C
创建平台配置文件
platform\<YOUR_PLATFORM>\CMakeLists.txt 是您平台的主要配置文件。它指定了所有源代码,包含目录、编译定义以及您平台所需的其它参数。有关 CMake 语法的信息,请参阅 CMake 文档。您还可以将 platform\boards\qt\example-baremetal\CMakeLists.txt 作为您平台 CMakeLists.txt 的基础。
注意:当定义对于您的平台而言的源代码、包含目录或其它属性时,您必须指定 Platform 作为这些定义的目标。
以下为 example-baremetal 平台的 CMakeLists.txt
target_sources(Platform PRIVATE
examplelayerengine.cpp
examplepath.cpp
examplestroker.cpp
examplequeue.cpp
platform_context.cpp
devicelink.cpp
mem.cpp
${PLATFORM_COMMON_SRC_DIR}/singlepointtoucheventdispatcher.cpp
${PLATFORM_COMMON_SRC_DIR}/platform.cpp
# Add platform source files here
)
target_include_directories(Platform PRIVATE
# Add platform specific include directories here
)
target_compile_definitions(Platform PRIVATE
# Insert platform specific compile flags here
# e.g. APPLICATION_ADDRESS=0x90000000
)示例 CMakeLists.txt 中定义了源代码中的两个文件:platform_context.cpp 和 mem.cpp/mem-iar.cpp。这些文件分别包含了基本函数和内存分配 API 的示例代码。这些文件的详细内容请参阅 实现基本函数 和 在 Qt Quick Ultralite 平台抽象中的内存分配 两章。
设置平台属性
与平台相关的配置设置在目标平台的 CMakeLists.txt 文件中,作为 Platform 目标属性。以下表格展示了所有属性及其默认值和说明
常见属性
| 属性名称 | 默认值 | 说明 |
|---|---|---|
QUL_PLATFORM_DEFAULT_SCREEN_WIDTH | 480 | 默认屏幕宽度(像素)。目前仅由桌面后端使用。 |
QUL_PLATFORM_DEFAULT_SCREEN_HEIGHT | 272 | 默认屏幕高度(像素)。目前仅由桌面后端使用。 |
QUL_PLATFORM_DEFAULT_TEXT_CACHE_ENABLED | 关闭 | 目标平台上的默认文本缓存值。有关更多信息,请参阅 QUL_PLATFORM_DEFAULT_TEXT_CACHE_ENABLED。 |
QUL_PLATFORM_DEFAULT_TEXT_CACHE_SIZE | 24*1024 | 目标平台上的默认文本缓存大小。有关更多信息,请参阅 QUL_PLATFORM_DEFAULT_TEXT_CACHE_SIZE。 |
QUL_PLATFORM_DEFAULT_NUM_FRAMES_TO_PRESERVE_ASSETS | 0 | 目标平台上保留资源的默认帧数。有关更多信息,请参阅 QUL_PLATFORM_DEFAULT_NUM_FRAMES_TO_PRESERVE_ASSETS。 |
QUL_PLATFORM_REQUIRED_IMAGE_ALIGNMENT | 1 | 目标平台要求的最小对齐方式。更多信息请见QUL_PLATFORM_REQUIRED_IMAGE_ALIGNMENT。 |
QUL_PLATFORM_REQUIRED_PIXEL_WIDTH_ALIGNMENT | 1 | 在目标平台上,图像宽度将是该值的倍数。更多信息请见QUL_PLATFORM_REQUIRED_PIXEL_WIDTH_ALIGNMENT。 |
QUL_PLATFORM_EXCLUDED_EXAMPLES | 应从构建中排除的示例列表。它定义在CMake列表格式中,每个值由分号分隔或分隔。 以下示例禁用了 set_target_properties(Platform
PROPERTIES
QUL_PLATFORM_EXCLUDED_EXAMPLES "freertos_multitask;image_cache"
) | |
QUL_PLATFORM_EXCLUDED_DEMOS | 应从构建中排除的演示列表。它定义在CMake列表格式中,每个值由分号分隔或分隔。 以下示例禁用了 set_target_properties(Platform
PROPERTIES
QUL_PLATFORM_EXCLUDED_DEMOS "automotive;motor_cluster"
) | |
QUL_PLATFORM_EXCLUDED_TESTS | 应从构建中排除的测试列表。它定义在CMake列表格式中,每个值由分号分隔或分隔。 以下示例禁用了 set_target_properties(Platform
PROPERTIES
QUL_PLATFORM_EXCLUDED_TESTS "controls;flickable"
) |
Infineon平台特定属性
| 属性名称 | 说明 | |
|---|---|---|
| QUL_PRIVATE_INFINEON_RESOURCE_GENERATOR | 到ResourceGenerator.exe二进制文件的路径,该文件位于Infineon SDK目录中。设置此属性以编译资源。 |
NXP平台特定属性
| 属性名称 | 说明 |
|---|---|
| NXP_CHIP_NAME | NXP芯片家族名称,例如MIMXRT1052xxxxB。设置此变量以能够烧录目标。 |
| NXP_CONNECT_SCRIPT | 从MCUXpressoIDE获取的连接脚本名称,例如RT1050_connect.scp。设置此变量以能够连接到烧录目标。 |
| NXP_RESET_SCRIPT | 从MCUXpressoIDE获取的重置脚本名称,例如RT1170_reset.scp。目前此变量仅由NXP RT1170需要,以便在烧录后正确重启板。 |
| NXP_PARTFILES_DIR | 包含XML格式NXP器件文件的目录路径。设置此变量以在烧录目标时使用它。 |
STM平台特定属性
| 属性名称 | 说明 |
|---|---|
| STM32_EXTERNAL_LOADER | STM32外部加载文件的路径,以便能够烧录外部内存。 |
在平台CMakeLists.txt中设置的示例属性
set_target_properties(Platform
PROPERTIES
NXP_CHIP_NAME "MIMXRT1052xxxxB"
NXP_CONNECT_SCRIPT "RT1050_connect.scp"
# variables cannot be expanded that's why there is "\" before "$". It will be later evaluated at CMake runtime using
# qul_private_evaluate_path_from_target_property() function
NXP_PARTFILES_DIR "\${QUL_PLATFORM_TARGET_DIR}/../mimxrt1050-evk-common/cmake"
QUL_PLATFORM_EXCLUDED_DEMOS "automotive;motor_cluster"
QUL_PLATFORM_EXCLUDED_EXAMPLES "freertos_app_switch;imagedecoder;layers;multiscreen"
QUL_PLATFORM_EXCLUDED_TESTS "layers;layers_with_shapes;layer_transparency;resource_storage_section"
QUL_PRIVATE_USE_PLATFORM_CONFIGURATION_HEADER ON
EXPORT_PROPERTIES "NXP_CHIP_NAME;NXP_CONNECT_SCRIPT;NXP_PARTFILES_DIR;QUL_PLATFORM_EXCLUDED_DEMOS;QUL_PLATFORM_EXCLUDED_EXAMPLES;QUL_PLATFORM_EXCLUDED_TESTS"
)指定平台编译和链接选项
platform.cmake包含特定于您平台的编译和链接选项。架构选项可以在特定架构的文件中找到。
指定供应商SDK特定设置
BSPConfig.cmake包含使用供应商SDK中的函数(如GPIO或中断处理程序)所需的所有设置。
参见平台SDK配置。
这些通常是特定板卡的宏定义和包含路径。
target_compile_definitions(PlatformBSPConfig INTERFACE
# Platform SDK specific compile definitions
USE_HAL_DRIVER
)
target_include_directories(PlatformBSPConfig INTERFACE
# Platform SDK specific include directories
# eg. ${QUL_BOARD_SDK_DIR}/Drivers/BSP/STM32F769I-Discovery/
)在特定的Qt许可证下提供。
了解更多信息。