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 许可证下可用。
了解更多信息。