C
生成GHS多IDE项目
本页介绍了关于生成Green Hills Software(GHS)MULTI IDE项目的额外信息。
注意:阅读Qt Quick Ultralite项目生成通用的说明以获取更多详细信息。
有关GHS项目结构的更多信息,请参阅生成的GHS项目内容。
从qmlprojectexporter
导出GHS项目有三种模式
- 生成GHS项目 - 从
.qmlproject
文件生成一个新的GHS项目 - 扩展GHS项目 - 添加Qt for MCUs平台和现有的未由
qmlprojectexporter
配置的GHS项目的UI源代码 - 更新GHS项目 - 更新一开始就由
qmlprojectexporter
配置的GHS项目的Qt for MCUs特定部分。
生成GHS项目
当您从现有的.qmlproject
文件生成一个新的GHS项目时,请使用此方法。您将获得一个由qmlprojectexporter
配置的项目,其中包含导出的平台源代码和生成的UI源代码。有关此过程的更多详细信息,请参阅首次生成项目。
以下是一个生成带有所需源文件、选项和库的完整可构建的GHS项目的示例命令
<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
注意:qmlprojectexporter
不是一个构建系统的替代品。如果您的项目依赖于不包括在.qmlproject
文件中的源文件和/或头文件,您必须手动将这些文件添加到生成的项目中。例如,您可以将其添加到application.gpj
中。
扩展GHS项目
如果您有一个未由qmlprojectexporter
配置的现有GHS项目,您可以使用--extend-project将Qt for MCUs源代码根据一个.qmlproject
文件扩展到此项目。除了要扩展的GHS项目外,执行此命令需要与生成GHS项目相同的所有信息。
要扩展一个GHS项目,请使用--extend-project参数指定主项目文件。主项目必须在直接子项目中包含一个类型为Program
的项目。qmlprojectexporter
会查找第一个有效的Program
项目文件,并添加Qt for MCUs组件。有关不同项目类型的更多信息,请参阅GHS MULTI IDE的帮助菜单和文档。
注意: 当使用此参数时,qmlprojectexporter
将修改您的现有项目文件。
默认情况下,qmlprojectexporter
将平台源导出到项目目录,并将它们包含在一个单独的子项目中。如果您的项目已经包含在目标平台上运行Qt for MCUs所需的源代码,您可以使用--export-platform false
参数跳过此步骤。您还可以使用--include-ide-generated-hw-code和--board-sdk参数指示qmlprojectexporter
添加一个子系统,包含目标平台SDK的驱动程序。
注意: Qt for MCUs平台导出会添加链接脚本和其他可能与传统配置不兼容的选项。确保在导出后编辑它们,以确保板级配置正确。
以下示例命令使用所有平台、板级SDK和生成的UI源和选项扩展项目:
<QUL_ROOT>/bin/qmlprojectexporter.exe --platform rh850-d1m1a-baremetal --toolchain ghs --project-type ghs --extend-project my_project/project.gpj --include-ide-generated-hw-code --board-sdk /path/to/board-sdk my_project.qmlproject
生成的项目文件位于prj
目录,相对于Program
项目文件的路径。
更新GHS项目
当您有一个包含Qt for MCUs平台和UI源的GHS项目时,您可以使用--update-project命令行参数更新其Qt for MCUs具体内容。在更改任何UI代码或资源后,运行此命令以将源代码重新导出到GHS项目。
<QUL_ROOT>/bin/qmlprojectexporter.exe my_project.qmlproject --update-project my_project/main_project_file.gpj
注意: 您还可以通过生成的GHS Multi IDE QUL Workspace使用UI更新GHS项目。
生成的GHS项目内容
生成的项目包括以下GHS MULTI IDE项目文件:
注意: 当扩展现有项目时,主项目文件和Program
文件已经是GHS项目的一部分,并且可能具有不同的名称。
<outdir>/GHS/project.gpj
主项目文件定义了目标架构和一些简化子项目路径的宏。<outdir>/GHS/prj/program.gpj
主程序文件包含程序全局编译定义、编译选项、连接器指令、包含目录和连接器脚本。它还列出了应用程序使用的子项目。<outdir>/GHS/prj/drivers.gpj
子项目文件包含所有从板级SDK包含的底层驱动程序,这些驱动程序由Qt for MCUs需要。如果未设置--include-ide-generated-hw-code标志,则此项目可能为空。<outdir>/GHS/prj/application.gpj
为您方便而添加的空子项目。将main.cpp
和其他后端代码添加到此子项目中。仅当使用qmlprojectexporter
从头开始生成项目时才添加此子项目。<outdir>/GHS/prj/QtMCUs/qul_platform.gpj
用于导出Qt for MCUs平台源代码的子项目。<outdir>/GHS/prj/QtMCUs/qul_app.gpj
添加从主.qmlproject
文件生成的UI文件的下项目。<outdir>/GHS/prj/QtMCUs/qul_module_
为每个.gpj .qmlproject
模块添加生成模块UI源文件的子项目。
当更新现有项目文件时,qmlprojectexporter
依赖于主程序文件中的受保护部分。特定平台的部件用 ## QUL_PLATFORM BEGIN ##
和 ## QUL_PLATFORM END ##
包围。项目文件的这些部分来自 .qmlproject
文件,并用 ## QUL_APP BEGIN ##
和 ## QUL_APP END ##
包围。
注意:当您更新相应部分时,所有包含在这些封闭部分的内容可能会没有警告地被覆盖。确保在手动向项目中添加文件时避免这些部分。
当更新现有项目时,qmlprojectexporter
会修改项目文件,以反映 .qmlproject
文件中的最新更改。这意味着 GHS 程序文件中用 QUL_APP
封闭的内容将发生变化。此外,qmlprojectexporter
将更替 <project-outdir>/prj/QtMCUs
中相应子项目的文件内容。平台子项目(qul_platform.gpj
)和用 QUL_PLATFORM
封闭的内容保持不变,除非明确使用 --export-platform 请求平台更新。
以下 Program
项目文件示例演示了 qmlprojectexporter
如何更新现有项目
#!gbuild [Program] -DQUL_STD_STRING_SUPPORT -DSDOME_PREPROCESSOR_DEFINE -o application.elf ## QUL_APP BEGIN ## -DSOME_UNRELATED_DEFINE <- Unrelated to QUL. Will be removed -I/path/to/qmlproject -DSOME_DEFINE_NEEDED_BY_GENERATED_FILES ## QUL_APP END ## ## QUL_PLATFORM BEGIN ## -I${QUL_PLATFORM_DIR}/platform/common # cxx compile options --C++14 ## QUL_PLATFORM END ## application.gpj drivers.gpj ## QUL_APP BEGIN ## QtMCUs/qul_app.gpj ## QUL_APP END ## ## QUL_PLATFORM BEGIN ## QtMCUs/qul_platform.gpj ## QUL_PLATFORM END ##
您添加了新模块并更新项目(使用 qmlprojectexporter ./main.qmlproject --update-project <outdir>/GHS/project.gpj
)后,QUL_APP
部分被覆盖。注意,带有 -DSOME_UNRELATED_DEFINE
的行已被删除,因为它不是由 qmlprojectexporter
生成的代码使用的。同样,在受保护的区域内找到了新模块的新包含路径和子项目。项目的其他部分保持不变
#!gbuild [Program] -DQUL_STD_STRING_SUPPORT -DSDOME_PREPROCESSOR_DEFINE -o application.elf ## QUL_APP BEGIN ## -I/path/to/qmlproject -I/path/to/MyNewModule <- Newly added include path -DSOME_DEFINE_NEEDED_BY_GENERATED_FILES ## QUL_APP END ## ## QUL_PLATFORM BEGIN ## -I${QUL_PLATFORM_DIR}/platform/common # cxx compile options --C++14 ## QUL_PLATFORM END ## application.gpj drivers.gpj ## QUL_APP BEGIN ## QtMCUs/qul_app.gpj QtMCUs/qul_module_MyNewModule.gpj <- Newly added subproject ## QUL_APP END ## ## QUL_PLATFORM BEGIN ## QtMCUs/qul_platform.gpj ## QUL_PLATFORM END ##
GHS 多 IDE QUL 工作区
在生成新项目或扩展现有项目后,您可能希望在 Qml 文件中更改设计布局或用另一个资源替换它。这需要为每个对 Qt Quick Ultralite 项目的修改运行正确的更新命令。
为了简化此过程,生成的或扩展的项目将有一个工作空间文件,在首次运行时 qmlprojectexporter
将将其添加到项目。它包含一系列命令,这些命令将在第一次运行时运行 qmlprojectexporter
,并带有正确的参数来构建项目,以及使用新更新、添加或删除的文件。工作空间的替代方法是手动在终端上组合命令序列。
工作空间文件的名称是 <project_name>_qul_workspace.gmb
,位于主 .gpj
文件相同的文件夹中。使用以下方法之一导入文件
- 使用启动器。如果您打开启动器,最快找到
.gmb
文件的方法是转到文件->"从文件加载工作区..."
并在<outdir>/GHS
文件夹中找到该文件。命令序列包含一个步骤,该步骤还将打开项目管理器
。 - 使用项目管理器。双击
<outdir>/GHS/project.gpj
文件也可以打开项目管理器。为了快速添加 Qt Quick Ultralite 工作空间并显示启动器,双击工作空间文件并接受将它们加载到现有工作空间中。
到此,您将有一个包含更新命令序列的可用工作空间。
注意:您可以通过直接运行命令而不是整个序列来跳过 qmlprojectexporter
更新。
如果一切配置正确,运行列表应该会显示 qmlprojectexporter
已成功运行并且项目应该开始构建。
闪光
除了 GHS 项目文件之外,qmlprojectexporter
还会生成一些有助于将应用程序烧录到目标硬件的辅助文件。文件类型和烧录方法因平台而异。
在更新现有项目时,qmlprojectexporter
会首先查找预期的烧录文件现有副本。如果文件已存在,则不会覆盖它。这是为了保留任何手动更改。要重新生成这些文件,只需将现有文件从项目目录重命名或删除即可。
如果这里描述的方法在你的项目中不起作用,请参考 烧录应用程序 以获取烧录说明。
Renesas RH850 D1M1A
为 Renesas RH850 生成项目时,qmlprojectexporter
会将两个连接文件添加到主项目中,分别为 qul_probe_E1.con
和 qul_probe_E2.con
。这些文件包含连接到 E1 和 E2 探头的元数据。当在 GHS MULTI IDE 中打开项目时,这些连接文件将自动打开并准备使用。按照以下步骤连接到探头
- 确保探头连接到目标板和计算机。
- 按 F4 或在 UI 中选择 连接 > 连接... 以打开连接选择器。
- 根据你的探头选择
QUL_PROBE_E1
或QUL_PROBE_E2
。 - 点击 连接 并确保已成功建立连接。
一旦建立了连接,你就可以使用 GHS MULTI IDE 将应用程序烧录到板上,并使用 IDE 的功能进行调试。
连接文件依赖于随 GHS 工具链一起安装的文件。生成文件中的路径是硬编码的,并假设工具链安装在 C:\ghs\comp_201815
。如果您的环境中有不同的路径,请编辑文件以输入正确的路径。
注意:由于 GHS MULTI IDE 在打开或关闭连接文件时可能会对其做出更改,建议在 GHS MULTI IDE 中打开项目之前,在单独的文本编辑器中编辑文件,以避免意外的更改。
Infineon 板卡
当导出支持 Infineon 平台之一的项目时,qmlprojectexporter
会添加包含用于使用 MiniProg4 或 J-Link 探头烧录应用程序的命令的批处理文件。还添加了运行这些命令的快捷方式到工作区文件中,以便方便访问。名为 qul_flash_jlink.bat
和 qul_flash_miniprog.bat
的批处理文件放在与主项目文件相同的目录中。
从生成的批处理文件中运行的命令是 Infineon 板卡烧录说明 中列出的命令。
批处理文件假定 Infineon Flash Utility 1.4 已经安装在默认位置,或者其路径存储在环境变量 INFINEON_AUTO_FLASH_UTILITY_DIR 中。
注意:由于命令依赖于应用程序二进制文件的路径,如果 qmlprojectexporter
在处理项目时无法检测到此路径,则不会生成批处理文件。它会搜索 GHS 项目中主程序文件中的 -o
-选项,以便定位二进制输出文件。
根据某些 Qt 许可证提供。
了解更多信息。