C

使用平台源导出 Qt for MCUs 项目

您可以使用 qmlprojectexporter 生成一个针对选定目标的 Qt for MCUs 项目和平台源以及每个 .qmlproject 文件的生成 UI 源。

除了以下说明外,您还可以参考此处 IDE 特定的配置

使用

通过选择项目类型和平台目标来触发项目生成。可用的项目类型是 "ghs""cmake""none"。使用 --project-type 命令行参数来选择类型。

第一次生成项目

当第一次生成项目时,默认包含平台源和来自 .qmlproject 文件的生成源。要覆盖默认行为,请使用 --export-platform--no-export-platform--no-export-qml

Qt for MCUs 安装附带平台元数据,用于导出。使用以下两种方法之一指定平台目标

  • 使用 --platform 命令行参数指定平台,并使用 --toolchain 指定工具链。使用此信息,qmlprojectexporter 在您的 Qt for MCUs 安装目录中定位正确的元数据文件。示例
    <QUL_ROOT>/bin/qmlprojectexporter.exe --platform stm32f769i-discovery-baremetal --toolchain iar --project-type cmake --outdir my_project my_project.qmlproject
  • 使用 --platform-metadata 命令行参数指定平台元数据文件。对于安装包,平台元数据文件位于 <QUL_ROOT>/lib;对于自定义平台构建,位于构建目录。元数据文件名使用以下格式:QulPlatformTargets_<PLATFORM_NAME>-export.json。示例
    <QUL_ROOT>/bin/qmlprojectexporter.exe --platform-metadata <QUL_ROOT>/lib/QulPlatformTargets_stm32f769i-discovery-baremetal_32bpp_Windows_iar-export.json --project-type cmake --outdir my_project my_project.qmlproject

对于某些目标平台和 IDE,您需要从板的 SDK 中使用驱动程序源来运行平台代码。使用 --board-sdk--include-ide-generated-hw-code 命令行参数将这些源包含在生成的项目中。

以下示例命令可以生成带有使用MCU平台的Qt源代码、板级SDK的驱动代码以及基于指定的.qmlproject生成的UI源代码的项目。如果您还添加了<)"

<QUL_ROOT>/bin/qmlprojectexporter.exe --platform rh850-d1m1a-baremetal --toolchain ghs --project-type ghs --outdir my_project --include-ide-generated-hw-code --board-sdk /path/to/board-sdk my_project.qmlproject --generate-entrypoint

注意:如果.qmlproject中包含的接口依赖于外部源文件,请手动将它们添加到项目中。

如果您有一个现有的项目,可以使用qmlprojectexporter和<КТ translate="no">--extend-project命令行参数将Qt for MCUs平台和UI代码添加到其中。扩展项目需要从头开始生成项目时所需的信息,如下面的示例所示

<QUL_ROOT>/bin/qmlprojectexporter.exe --platform rh850-d1m1a-baremetal --toolchain ghs --project-type ghs my_project.qmlproject --extend-project my_project/main_project_file.gpj

注意:目前,您只能扩展GHS项目。有关更多详细信息,请参阅< ")

注意:如果您未使用--outdir设置输出目录,则qmlprojectexporter使用在--extend-project中指定的主要项目文件的基目录。

注意:平台源代码和从.qmlproject文件生成的源代码默认包含在内。要覆盖默认行为,请使用--export-platform或--no-export-qml。

更新现有项目

qmlprojectexporter将Qt for MCUs添加到项目时,它同时将用于导出的命令行参数存储在exporter_settings.json中。如果在.qmlproject中发生更改,这简化了后续的更新。

要更新已使用Qt for MCUs源代码和子项目扩展(或创建)的现有项目,请提供主要项目文件和.qmlproject文件

<QUL_ROOT>/bin/qmlprojectexporter.exe my_project.qmlproject --update-project my_project/main_project_file.gpj

注意:这假设qmlprojectexporter设置缓存文件(exporter_settings.json)位于项目的基目录中。

对于GHS项目,将预配置的工作空间添加到主要项目,有关如何使用它来触发更新的信息,请参阅《CT translate="no">GHS Multi IDE QUL Workspace。

如果现有项目已经具有应用程序入口点,请参阅)在应用程序中运行Qt Quick Ultralite的说明,了解如何将Qt for MCUs集成到自定义的main()函数中。如果没有,请使用--generate-entrypoint参数创建一个并将其添加到项目中。

项目结构

使用--outdir命令行参数指定项目的输出目录。默认情况下,平台源代码、生成的UI源代码以及包含它们的项目文件都放置在输出目录下单独的目录中。

注意:如果未设置--outdir,则qmlprojectexporter使用当前工作目录。

  • 导出的平台源代码位于<outdir>/QtMCUs/platform
  • 从QmlProject生成的UI源代码位于<outdir>/QtMCUs/generated
  • IDE项目文件位于<outdir>/<project-type>。如果项目类型是ghs,则IDE文件路径为<outdir>/GHS

您可以使用相应的命令行参数覆盖默认目录

项目类型

项目类型<_CODE translate="no">None

默认项目类型是"none",这意味着qmlprojectexporter将不会导出平台源文件和IDE特定的项目文件。生成的UI文件将直接放置在由--outdir指定的输出目录中。在这种情况下,不需要指定平台目标。

项目类型 GHS

要生成包含Qt for MCUs源代码的GHS MULTI IDE项目,请使用--project-type ghs。有关生成的项目内容的详细描述,请参阅生成的GHS项目内容

项目类型 CMake

使用--project-type cmake生成CMake包并将平台源代码导出到输出目录。

有关如何在CMake项目中使用此包的信息,请参阅生成CMake项目

平台导出

您可以使用qmlprojectexporter导出Qt for MCUs平台源文件而无需QmlProject。为此,指定如上所述的项目类型和平台,以及额外的命令行参数--no-export-qml

注意:Qt Quick Ultralite库默认配置为使用链接时优化。这需要使用构建Qt Quick Ultralite库时使用的确切编译器版本。

导出预构建平台

<QUL_DIR>/bin/qmlprojectexporter.exe \
    --platform-metadata <QUL_DIR>/lib/QulPlatformTargets_<PLATFORM_NAME>-export.json \
    --project-type cmake \
    --no-export-qml \
    --outdir <DESTINATION_FOLDER>

从自定义平台构建中导出源文件

在构建目录中(<BUILD_DIR>/.cmake/api/v1/query/codemodel-v2)创建一个空文件,然后重新配置和重建树,以便CMake生成元数据文件(只需构建PlatformExport CMake目标即可。元数据文件位于构建目录中,为 <BUILD_DIR>/QulPlatformTargets_<PLATFORM_NAME>-export.json。例如,STM32F469平台的元数据文件将是:QulPlatformTargets_stm32f469i-discovery-baremetal_24bpp_Linux_armgcc-export.json

<QUL_DIR>/bin/qmlprojectexporter.exe \
    --platform-metadata <QUL_DIR>/QulPlatformTargets_<PLATFORM_NAME>-export.json \
    --project-type cmake \
    --no-export-qml \
    --outdir <DESTINATION_FOLDER> \
    --platform-build-dir <BUILD_DIR>

将Qt for MCUs集成到第三方IDE中

按照以下步骤将导出的源文件集成到第三方IDE或构建系统。

注意:这些步骤对于GHS Multi IDE和CMake项目是自动执行的。当使用其他IDE时,请手动执行这些步骤。

  1. 将导出的平台和应用程序源文件添加到IDE项目。
  2. 将汇编源文件添加到项目源文件列表。将--toolchain GNU传递给qmlprojectexporter可以使资源生成二进制文件(incbin)。在这种情况下,需要将qul_font_files_loader.Squl_assets.S添加到源文件。此选项仅适用于GNU GCC编译器。对于其他编译器,资源作为C++数组生成。
  3. 添加包含引脚复用、时钟配置和硬件初始化代码的板级文件。

    您可以使用以下任一选项添加这些文件

    • 可以使用MCU供应商工具(如STM32 CubeMX或NXP MCUXPresso配置工具)生成自定义板级文件。
    • 使用--include-ide-generated-hw-codeqmlprojectexporter导出由Qt for MCUs提供的用于参考板的板级文件。您还可以使用--ide-sources-outdir选项指定目标目录。

    例如(除非特别导出GHS MULTI IDE项目,否则请使用"cmake"项目类型)

    <QUL_DIR>/bin/qmlprojectexporter.exe \
        --platform-metadata $BUILD_DIR/QulPlatformTargets_<PLATFORM_NAME>-export.json \
        --outdir <DESTINATION_FOLDER> \
        --platform-build-dir <BUILD_DIR> \
        --ide-sources-outdir <IDE_PROJECT_ROOT_DIR>/board \
        --include-ide-generated-hw-code \
        --project-type cmake | ghs \
        --no-export-qml
  4. 添加包含路径、预定义和工具链标志。

    <PLATFORM_EXPORT_DIR>/IDE-Import-Instructions.txt 文件列出了项目中所需的编译器和链接器设置。这包括架构标志、包含路径以及用于当前工具链的预处理器定义。

  5. 将导出的链接脚本路径添加到项目的链接器设置中。

    Qt Quick Ultralite应用程序的链接脚本需要定义用于资源数据和缓存的自定义部分。平台导出的链接脚本可以直接在IDE中使用。

    对于ARMGCC: <QUL_EXPORT_FOLDER>/platform/boards/nxp/<board>/cmake/armgcc/<linker_file>.ld 对于IAR: <QUL_EXPORT_FOLDER>/platform/boards/nxp/<board>/cmake/iar/<linker_file>.icf

  6. 将以下预构建的Qt Quick Ultralite库添加到链接器设置中
    • <BUILD_DIR>/libQulCore_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulControls_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulPNGDecoderLodePNG_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulPNGDecoderNull_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulShapes_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulControlsTemplates_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulTimeline_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulMonotypeUnicodeEngineShaperDisabled_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulMonotypeUnicode_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a

更多信息

QUL_STD_STRING_SUPPORT CMake选项

如果核心库中使用此选项构建,则配置项目时需要使用QUL_STD_STRING_SUPPORT CMake选项,因为架构要求。否则应用程序会崩溃。

在特定的Qt许可证下可用。
了解更多。