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.cppmem.cpp/mem-iar.cpp。这些文件分别包含了基本函数和内存分配 API 的示例代码。这些文件的详细内容请参阅 实现基本函数在 Qt Quick Ultralite 平台抽象中的内存分配 两章。

设置平台属性

与平台相关的配置设置在目标平台的 CMakeLists.txt 文件中,作为 Platform 目标属性。以下表格展示了所有属性及其默认值和说明

常见属性

属性名称默认值说明
QUL_PLATFORM_DEFAULT_SCREEN_WIDTH480默认屏幕宽度(像素)。目前仅由桌面后端使用。
QUL_PLATFORM_DEFAULT_SCREEN_HEIGHT272默认屏幕高度(像素)。目前仅由桌面后端使用。
QUL_PLATFORM_DEFAULT_TEXT_CACHE_ENABLED关闭目标平台上的默认文本缓存值。有关更多信息,请参阅 QUL_PLATFORM_DEFAULT_TEXT_CACHE_ENABLED
QUL_PLATFORM_DEFAULT_TEXT_CACHE_SIZE24*1024目标平台上的默认文本缓存大小。有关更多信息,请参阅 QUL_PLATFORM_DEFAULT_TEXT_CACHE_SIZE
QUL_PLATFORM_DEFAULT_NUM_FRAMES_TO_PRESERVE_ASSETS0目标平台上保留资源的默认帧数。有关更多信息,请参阅 QUL_PLATFORM_DEFAULT_NUM_FRAMES_TO_PRESERVE_ASSETS
QUL_PLATFORM_REQUIRED_IMAGE_ALIGNMENT1目标平台要求的最小对齐方式。更多信息请见QUL_PLATFORM_REQUIRED_IMAGE_ALIGNMENT
QUL_PLATFORM_REQUIRED_PIXEL_WIDTH_ALIGNMENT1在目标平台上,图像宽度将是该值的倍数。更多信息请见QUL_PLATFORM_REQUIRED_PIXEL_WIDTH_ALIGNMENT
QUL_PLATFORM_EXCLUDED_EXAMPLES应从构建中排除的示例列表。它定义在CMake列表格式中,每个值由分号分隔或分隔。

以下示例禁用了freertos_multitaskimage_cache示例

set_target_properties(Platform
    PROPERTIES
        QUL_PLATFORM_EXCLUDED_EXAMPLES "freertos_multitask;image_cache"
)
QUL_PLATFORM_EXCLUDED_DEMOS应从构建中排除的演示列表。它定义在CMake列表格式中,每个值由分号分隔或分隔。

以下示例禁用了automotivemotor_cluster演示

set_target_properties(Platform
    PROPERTIES
        QUL_PLATFORM_EXCLUDED_DEMOS "automotive;motor_cluster"
)
QUL_PLATFORM_EXCLUDED_TESTS应从构建中排除的测试列表。它定义在CMake列表格式中,每个值由分号分隔或分隔。

以下示例禁用了controlsflickable测试

set_target_properties(Platform
    PROPERTIES
        QUL_PLATFORM_EXCLUDED_TESTS "controls;flickable"
)

Infineon平台特定属性

属性名称说明
QUL_PRIVATE_INFINEON_RESOURCE_GENERATORResourceGenerator.exe二进制文件的路径,该文件位于Infineon SDK目录中。设置此属性以编译资源。

NXP平台特定属性

属性名称说明
NXP_CHIP_NAMENXP芯片家族名称,例如MIMXRT1052xxxxB。设置此变量以能够烧录目标。
NXP_CONNECT_SCRIPTMCUXpressoIDE获取的连接脚本名称,例如RT1050_connect.scp。设置此变量以能够连接到烧录目标。
NXP_RESET_SCRIPTMCUXpressoIDE获取的重置脚本名称,例如RT1170_reset.scp。目前此变量仅由NXP RT1170需要,以便在烧录后正确重启板。
NXP_PARTFILES_DIR包含XML格式NXP器件文件的目录路径。设置此变量以在烧录目标时使用它。

STM平台特定属性

属性名称说明
STM32_EXTERNAL_LOADERSTM32外部加载文件的路径,以便能够烧录外部内存。

在平台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许可证下提供。
了解更多信息。