C
创建平台工具包配置文件
<YOUR_PLATFORM>.json 文件用于在 Qt Creator IDE 中创建平台工具包。它在 Qt Creator 中表示一个目标。
注意:此文件仅适用于您要使用 Qt Creator IDE 的情况。
注意:Qt Creator 不支持自定义编译器。
工具包 JSON 文件的主要元素包括
| 属性 | 描述 |
|---|---|
qulVersion | 平台构建所依赖的 Qt Quick Ultralite 版本。默认情况下,此值设置为 @CMAKE_PROJECT_VERSION@。 |
platform | 包含平台名称、支持的颜色深度列表、供应商/制造商名称和第三方软件包的对象。 |
toolchain | 包含平台使用的工具链详细信息的对象。它分为两个对象 - 编译器和文件。前者帮助查找编译器,后者包含工具链的 CMake 文件的位置 使用自定义工具链。 |
boardSdk | 包含平台使用的 SDK 详细信息的对象。 |
freeRTOS | 包含平台 FreeRTOS 支持详细信息的对象。这部分不在裸机设备中存在。 |
JSON 文件包含一组合成的 json 对象,Qt Creator 使用这些对象来创建工具包。每个对象代表第三方依赖项(软件包),并持有依赖项的路径。路径稍后将转发到不同的输出
- 用于配置项目的 cmake 变量(例如 -DFREERTOS_DIR=<path>)
- 将添加到 PATH 环境变量中的目录
软件包值可以按以下顺序从以下位置由 QtCreator 读取
- Qt Creator 设置。
- 相应的环境变量(
envVar)。 - 在 json 文件中定义的
defaultValue。
总之,生成正确工具包所需的软件包包括
- 平台的第三方软件包(cmakeEntries 数组)。
- 工具链软件包(一个编译器和工具链文件)。
- BoardSdk 软件包
- FreeRTOS 软件包(当适用时)
每个软件包都有以下属性
| 属性 | 描述 |
|---|---|
cmakeVar | 输出 cmake 变量 |
setting | 应由 Qt Online 安装程序设置的 QtCreator 设置名称。 |
envVar | 要覆盖设置中值的环境变量名称。 |
label | 在 MCU 支持插件的 UI 中显示的标签(编辑 -> 预设 -> 设备 -> MCU) |
defaultValue | 默认值,用于设置或环境变量未设置时。针对Windows和Linux分别设置不同的值。 |
版本 | 支持的版本列表。 |
版本检测 | 用于版本检测的信息。 |
验证 | 用于验证软件包的路径后缀。 |
可以使用位于 $QUL_ROOT/kits/schemas/ 中的架构文件和一个可选择的 jsonschema 验证工具来验证平台 json 工具文件,在线解决方案可以在这里找到。架构使用Draft-2020-12规范。目前只提供 "schema-2.3",以验证与 QtMCUs 2.3.0 及更高版本兼容的套件。
套件的 JSON 文件的主体元素如下:这里是一个示例 JSON 文件(example-baremetal.json)
{
"qulVersion": "@CMAKE_PROJECT_VERSION@",
"compatVersion": "@COMPATIBILITY_VERSION@",
"platform": {
"colorDepths": [
16
],
"id": "EXAMPLE-BAREMETAL",
"vendor": "Vendor Name"
},
"toolchain": {
"id": "armgcc",
"versions": [
"12.3.1"
],
"compiler": {
"id": "ARMGCC_DIR",
"label": "GNU Arm Embedded Toolchain",
"cmakeVar": "QUL_TARGET_TOOLCHAIN_DIR",
"envVar": "ARMGCC_DIR",
"setting": "GNUArmEmbeddedToolchain",
"type": "path",
"optional": false,
"versionDetection": {
"filePattern": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
},
"executableArgs": "--version",
"regex": "\\b(\\d+\\.\\d+\\.\\d+)\\b"
},
"detectionPath": {
"windows": "bin/arm-none-eabi-g++.exe",
"linux": "bin/arm-none-eabi-g++"
}
},
"file": {
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
"type": "file",
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake",
"visible": false,
"optional": false
}
},
"boardSdk": {
"versions": [
"1.16.0"
],
"id": "EXAMPLE_SDK_DIR",
"label": "Board SDK",
"cmakeVar": "QUL_BOARD_SDK_DIR",
"type": "path",
"optional": false
}
}这里是为 IAR 编译器提供的 JSON 文件。与之前的示例有一些区别
{
"qulVersion": "@CMAKE_PROJECT_VERSION@",
"compatVersion": "@COMPATIBILITY_VERSION@",
"platform": {
"id": "EXAMPLE-BAREMETAL",
"vendor": "Vendor Name",
"colorDepths": [
16
]
},
"toolchain": {
"id": "iar",
"versions": [
"9.40.1"
],
"compiler": {
"id": "IARToolchain",
"setting": "IARToolchain",
"envVar": "IAR_ARM_COMPILER_DIR",
"label": "IAR ARM Compiler",
"cmakeVar": "QUL_TARGET_TOOLCHAIN_DIR",
"type": "path",
"versionDetection": {
"filePattern": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"executableArgs": "--version",
"regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
},
"detectionPath": {
"windows": "bin/iccarm.exe",
"linux": "bin/iccarm"
},
"defaultValue": {
"windows": "%{Env:PROGRAMFILES}/IAR Systems/Embedded Workbench 9.2/arm",
"linux": "/opt/iarsystems/bxarm-9.40.1/arm"
},
"optional": false
},
"file": {
"id": "IAR_CMAKE_TOOLCHAIN_FILE",
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
"type": "file",
"defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/iar.cmake",
"visible": false,
"optional": false
}
},
"boardSdk": {
"versions": [
"1.16.0"
],
"id": "EXAMPLE_SDK_DIR",
"label": "Board SDK",
"cmakeVar": "QUL_BOARD_SDK_DIR",
"type": "path",
"optional": false
}
}某些 Qt 许可证下可用。
了解更多信息。