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项目。有关更多详细信息,请参阅< ")
注意:如果您未使用qmlprojectexporter
使用在
注意:平台源代码和从.qmlproject
文件生成的源代码默认包含在内。要覆盖默认行为,请使用
更新现有项目
当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参数创建一个并将其添加到项目中。
项目结构
使用
注意:如果未设置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时,请手动执行这些步骤。
- 将导出的平台和应用程序源文件添加到IDE项目。
- 将汇编源文件添加到项目源文件列表。将
--toolchain GNU
传递给qmlprojectexporter可以使资源生成二进制文件(incbin)。在这种情况下,需要将qul_font_files_loader.S
和qul_assets.S
添加到源文件。此选项仅适用于GNU GCC编译器。对于其他编译器,资源作为C++数组生成。 - 添加包含引脚复用、时钟配置和硬件初始化代码的板级文件。
您可以使用以下任一选项添加这些文件
- 可以使用MCU供应商工具(如STM32 CubeMX或NXP MCUXPresso配置工具)生成自定义板级文件。
- 使用
--include-ide-generated-hw-code
与qmlprojectexporter
导出由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
- 添加包含路径、预定义和工具链标志。
<PLATFORM_EXPORT_DIR>/IDE-Import-Instructions.txt 文件列出了项目中所需的编译器和链接器设置。这包括架构标志、包含路径以及用于当前工具链的预处理器定义。
- 将导出的链接脚本路径添加到项目的链接器设置中。
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
- 将以下预构建的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许可证下可用。
了解更多。