C

从源代码构建 Qt Quick Ultralite

本主题提供了从源代码构建完整的 Qt Quick Ultralite 或仅针对 Qt Quick Ultralite 评估包构建平台库的说明。

先决条件

  • Qt for MCUs SDK
  • Qt Creator v13.0.0 或更高版本
  • CMake 3.21.1 或更高版本
  • Ninja 1.10.0 或更高版本
  • Qt 6.2.4 (仅适用于桌面平台)

注意:请确保您还安装了针对您特定板卡的入门部分中列出的所有先决条件。

命令行设置

要从命令行开始,请确保以下环境变量已设置

  • 将 CMake 和 Ninja 工具添加到您的系统 PATH。如果您使用 Qt 在线安装程序安装了这些工具,它们将安装在 <QT_INSTALL_PATH>\Tools 下。

QUL_ROOTQUL_TOOLS 以下命令行示例中使用,类似于它们作为环境变量设置。例如

export QUL_ROOT=$HOME/Qt/QtMCUs/2.8.0
export QUL_TOOLS=$HOME/Qt/Tools/QtMCUs
set QUL_ROOT=C:\Qt\QtMCUs\2.8.0
set QUL_TOOLS=C:\Qt\Tools\QtMCUs

要修改 Qt Quick Ultralite 桌面平台,设置 QT_ROOT 环境变量。

export QT_ROOT=$HOME/Qt/QtMCUs/6.2.4/<COMPILER>
set QT_ROOT=C:\Qt\6.2.4\<COMPILER>

其中,<COMPILER> 匹配您的宿主环境中的开发工具链 (msvc2019_64mingw_64gcc_64)。

Qt 6.2.4 是 QulPackage 默认使用的版本。将 QT_ROOT 更改为匹配您宿主环境中安装的 Qt 版本。

从源代码构建 Qt Quick Ultralite

如果您的许可证提供对 Qt Quick Ultralite 源代码的访问权限,请使用以下命令来构建它。

目标硬件

例如,以下构建针对裸金属的 NXP i.MX RT1050 的 Qt Quick Ultralite

cd $QUL_ROOT
mkdir build
cd build
mkdir -p .cmake/api/v1/query && touch .cmake/api/v1/query/codemodel-v2
cmake .. -G "Ninja" -DQul_ROOT=$QUL_ROOT -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=../lib/cmake/Qul/toolchain/armgcc.cmake -DQUL_TARGET_TOOLCHAIN_DIR=$QUL_TOOLS/arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=$QUL_TOOLS/NXP/SDK_2_15_000_EVKB-IMXRT1050 -DQUL_GENERATORS=../lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM=MIMXRT1050-EVK-baremetal
cmake --build .
cd %QUL_ROOT%
mkdir build
cd build
mkdir .cmake\api\v1\query && echo . > .cmake\api\v1\query\codemodel-v2
cmake .. -G "Ninja" -DQul_ROOT=%QUL_ROOT% -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=..\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_TARGET_TOOLCHAIN_DIR=%QUL_TOOLS%\arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=%QUL_TOOLS%\NXP\SDK_2_15_000_EVKB-IMXRT1050 -DQUL_GENERATORS=..\lib\cmake\Qul\QulGenerators.cmake -DQUL_PLATFORM=MIMXRT1050-EVK-baremetal
cmake --build .

要在不同的硬件平台上构建,相应更新 CMAKE_TOOLCHAIN_FILEQUL_TARGET_TOOLCHAIN_DIRQUL_PLATFORMQUL_BOARD_SDK_DIR CMake 变量。的值 QUL_PLATFORM 变量必须是由 <BOARD-NAME><OS> 组合而成。以下是您可以使用的所有可能的值的列表

  • TVIIC2D4M-baremetal
  • TVIIC2D4MLITE-baremetal
  • TVIIC2D6M-baremetal
  • TVIIC2D6MDDR-baremetal
  • EK-RA6M3G-baremetal
  • EK-RA6M3G-freertos
  • MIMXRT1050-EVK-baremetal
  • MIMXRT1050-EVK-freertos
  • MIMXRT1060-EVKB-baremetal
  • MIMXRT1064-EVK-baremetal
  • MIMXRT1064-EVK-freertos
  • MIMXRT1170-EVKB-freertos
  • RH850-D1M1A-baremetal
  • RH850-D1M1A-autosar
  • STM32F769I-DISCOVERY-baremetal
  • STM32F769I-DISCOVERY-freertos
  • STM32H750B-DISCOVERY-baremetal
  • STM32F469I-DISCOVERY-baremetal

注意: CMAKE_TOOLCHAIN_FILE 的值可以是 GreenHills、IAR 或 Arm GCC,如下例所示。

一旦成功构建了 Qt Quick Ultralite,就使用它构建支持的一个演示/示例,并将生成的二进制文件烧录到目标硬件。

cmake --build . --target flash_<DEMO_OR_EXAMPLE_NAME>

其中,DEMO_OR_EXAMPLE_NAME 是支持的一个演示或示例的名称。

注意:您还可以使用 flash_<DEMO_OR_EXAMPLE_NAME>_and_bootloader 目标将引导加载程序与演示/示例一起烧录。

桌面

Qt 6.2.4 是 QulPackage 默认使用的版本。将 QT_ROOT 更改为匹配您宿主环境中安装的 Qt 版本。

以下构建适用于桌面目标的 Qt Quick Ultralite

cd $QUL_ROOT
mkdir build
cd build
mkdir -p .cmake/api/v1/query && touch .cmake/api/v1/query/codemodel-v2
cmake .. -G "Ninja" -DQul_ROOT=$QUL_ROOT -DCMAKE_BUILD_TYPE=Release -DQUL_GENERATORS=../lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM=Qt -DCMAKE_PREFIX_PATH=$QUL_ROOT/bin
cmake --build .
cd %QUL_ROOT%
mkdir build
cd build
mkdir .cmake\api\v1\query && echo . > .cmake\api\v1\query\codemodel-v2
cmake .. -G "Ninja" -DQul_ROOT=%QUL_ROOT% -DCMAKE_BUILD_TYPE=Release -DQUL_GENERATORS=..\lib\cmake\Qul\QulGenerators.cmake -DQUL_PLATFORM=Qt -DCMAKE_PREFIX_PATH=%QUL_ROOT%\bin
cmake --build .

注意:在 Qt Quick Ultralite 项目中,默认将 CMAKE_BUILD_TYPE 设置为 MinSizeRelMinSizeRel 是用于与 Qt Quick Ultralite 一起提供的预构建平台库的构建类型。要更改构建类型(例如,设置为 Release),请使用具有 -DCMAKE_BUILD_TYPE=Release 选项的 CMake。有关更多信息,请参阅 CMAKE_BUILD_TYPE

使用评估包构建 Qt Quick Ultralite 平台库

使用 Qt Quick Ultralite 的评估版本,您可以修改和重新构建已经与 Qt Quick Ultralite 一起提供的平台。例如,移植到稍有不同的电路板配置。

有关如何为自定义硬件平台创建您自己的平台库的说明,请参阅 Qt Quick Ultralite 平台移植指南

注意:在修改源代码或安装自定义构建的平台库之前,建议您备份正在使用的现有 Qt for MCUs 版本。这种方法可让您在遇到自定义构建版本的问题时恢复到原始版本。

目标硬件

以下命令使用 NXP i.MX RT1050 作为参考平台构建 Qt Quick Ultralite 平台库

cd $QUL_ROOT
mkdir build
cd build
cmake .. -G "Ninja" -DQul_ROOT=$QUL_ROOT -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=$QUL_ROOT/lib/cmake/Qul/toolchain/armgcc.cmake -DQUL_TARGET_TOOLCHAIN_DIR=$QUL_TOOLS/arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=$QUL_TOOLS/NXP/SDK_2_15_000_EVKB-IMXRT1050 -DQUL_PLATFORM=MIMXRT1050-EVK-baremetal -DQUL_BUILD_DEMOS=off -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_FRAMEWORK=off -DQUL_GENERATORS=$QUL_ROOT/lib/cmake/Qul/QulGenerators.cmake
cmake --build .
cd %QUL_ROOT%
mkdir build
cd build
cmake .. -G "Ninja" -DQul_ROOT=%QUL_ROOT% -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=%QUL_ROOT%\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_TARGET_TOOLCHAIN_DIR=%QUL_TOOLS%\arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=%QUL_TOOLS%\NXP\SDK_2_15_000_EVKB-IMXRT1050 -DQUL_PLATFORM=MIMXRT1050-EVK-baremetal -DQUL_BUILD_DEMOS=off -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_FRAMEWORK=off -DQUL_GENERATORS=%QUL_ROOT%/lib/cmake/Qul/QulGenerators.cmake
cmake --build .

要将 Qt Creator 集成更新为使用自定义构建的平台库,设置以下两个环境变量

  • CMAKE_INSTALL_PREFIX 设置为 Qt for MCUs 安装目录。它应该与在 Qt Creator 中的 编辑 > 首选项 > 设备 > MCU 选项中设置的 Qt for MCUs 版本匹配。
  • QUL_VERSION 设置为相应的版本号。例如,如果 Qt Creator 配置为使用 C:\Qt\QtMCUs\<VERSION>,其中 <VERSION> 是包含您正在使用的 Qt Quick Ultralite 版本(例如 2.8.0)的目录。

设置这些变量后,使用以下命令配置和安装平台库

export QUL_VERSION=<VERSION>
cd $QUL_ROOT
mkdir build
cd build
cmake .. -G "Ninja" -DQul_ROOT=$QUL_ROOT -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=../lib/cmake/Qul/toolchain/armgcc.cmake -DQUL_PLATFORM=MIMXRT1050-EVK-baremetal -DQUL_TARGET_TOOLCHAIN_DIR=$QUL_TOOLS/arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=$QUL_TOOLS/NXP/SDK_2_15_000_EVKB-IMXRT1050 -DQUL_BUILD_DEMOS=off -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_FRAMEWORK=off -DCMAKE_INSTALL_PREFIX=$QUL_ROOT -DQUL_VERSION=$QUL_VERSION -DQUL_GENERATORS=$QUL_ROOT/lib/cmake/Qul/QulGenerators.cmake
cmake --build .
cmake --install .
set QUL_VERSION=<VERSION>
cd %QUL_ROOT%
mkdir build
cd build
cmake .. -G "Ninja" -DQul_ROOT=%QUL_ROOT% -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=..\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_PLATFORM=MIMXRT1050-EVK-baremetal -DQUL_TARGET_TOOLCHAIN_DIR=%QUL_TOOLS%\arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=%QUL_TOOLS%\NXP\SDK_2_15_000_EVKB-IMXRT1050 -DQUL_BUILD_DEMOS=off -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_FRAMEWORK=off -DCMAKE_INSTALL_PREFIX=%QUL_ROOT% -DQUL_VERSION=%QUL_VERSION% -DQUL_GENERATORS=%QUL_ROOT%/lib/cmake/Qul/QulGenerators.cmake
cmake --build .
cmake --install .

桌面

以下命令构建和安装自定义 Qt 平台库(桌面模拟器)。

export QUL_VERSION=<VERSION>
cd $QUL_ROOT
mkdir build
cd build
cmake .. -G "Ninja" -DQul_ROOT=$QUL_ROOT -DCMAKE_BUILD_TYPE=Release -DQUL_BUILD_FRAMEWORK=OFF -DQUL_BUILD_TOOLS=OFF -DQUL_BUILD_TESTS=OFF -DQUL_BUILD_EXAMPLES=OFF -DQUL_BUILD_DEMOS=OFF -DCMAKE_INSTALL_PREFIX=$QUL_ROOT -DQUL_VERSION=$QUL_VERSION -DQUL_GENERATORS=$QUL_ROOT/lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM=Qt -DCMAKE_PREFIX_PATH=$QUL_ROOT/bin;$QT_ROOT
cmake --build .
cmake --install .
set QUL_VERSION=<VERSION>
cd %QUL_ROOT%
mkdir build
cd build
cmake .. -G "Ninja" -DQul_ROOT=%QUL_ROOT% -DCMAKE_BUILD_TYPE=Release -DQUL_BUILD_FRAMEWORK=OFF -DQUL_BUILD_TOOLS=OFF -DQUL_BUILD_TESTS=OFF -DQUL_BUILD_EXAMPLES=OFF -DQUL_BUILD_DEMOS=OFF -DCMAKE_INSTALL_PREFIX=%QUL_ROOT% -DQUL_VERSION=%QUL_VERSION% -DQUL_GENERATORS=%QUL_ROOT%/lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM=Qt -DCMAKE_PREFIX_PATH=%QUL_ROOT%\bin;%QT_ROOT%
cmake --build .
cmake --install .

使用自定义构建的 Qt Quick Ultralite 构建应用程序

本节描述了如何使用自定义构建的 Qt Quick Ultralite 构建应用程序。

以下分步指导您构建和安装 Qt Quick Ultralite,并使用它构建应用程序

  1. 根据入门主题中的说明设置所选目标的开发展环境。
  2. 根据选择的目标和工具链设置环境变量。例如,以下是在ARM GCC工具链下用于MIMXRT1170-EVKB的开发板上的命令。要为其他平台或工具链构建,请相应地修改QUL_PLATFORM_NAMEQUL_BOARD_SDK_DIRCMAKE_TOOLCHAIN_FILEQUL_TARGET_TOOLCHAIN_DIRFREERTOS_DIR环境变量。如果您不在FreeRTOS平台上构建,可以省略FREERTOS_DIR参数。
    export QUL_PLATFORM_NAME=mimxrt1170-evkb-freertos
    export QUL_BOARD_SDK_DIR=$QUL_TOOLS/NXP/SDK_2_14_0_MIMXRT1170-EVKB
    export CMAKE_TOOLCHAIN_FILE=$QUL_ROOT/lib/cmake/Qul/toolchain/armgcc.cmake
    export QUL_TARGET_TOOLCHAIN_DIR=$QUL_TOOLS/arm_gcc_12_3_1
    export FREERTOS_DIR=$QUL_TOOLS/NXP/SDK_2_14_0_MIMXRT1170-EVKB/rtos/freertos/freertos-kernel
    set QUL_PLATFORM_NAME=mimxrt1170-evkb-freertos
    set QUL_BOARD_SDK_DIR=%QUL_TOOLS%\NXP\SDK_2_14_0_MIMXRT1170-EVKB
    set CMAKE_TOOLCHAIN_FILE=%QUL_ROOT%\lib\cmake\Qul\toolchain\armgcc.cmake
    set QUL_TARGET_TOOLCHAIN_DIR=%QUL_TOOLS%\arm_gcc_12_3_1
    set FREERTOS_DIR=%QUL_TOOLS%\NXP\SDK_2_14_0_MIMXRT1170-EVKB\rtos\freertos\freertos-kernel
  3. 如果您如前所述构建并安装了平台库,请遵循第4步说明来构建您的应用。

    否则,本步骤指导您从修改过的源代码构建Qt Quick Ultralite并将其安装到自定义位置。在开始之前,复制您用于构建自定义版本的Qt for MCUs版本。这确保自定义版本也包含宿主工具(qmltocpp、qmlinterfacegenerator等)和CMake配置。以下示例演示了如何将自定义版本构建和安装到QUL_INSTALL_DIR。构建在由QUL_BUILD_DIR定义的目录中进行。

    export QUL_VERSION=2.8.0
    export QUL_INSTALL_DIR=some/path/custom_qul
    export QUL_BUILD_DIR=some/path/custom_qul_build
    
    mkdir -p $QUL_INSTALL_DIR
    
    cp -r $QUL_ROOT/* $QUL_INSTALL_DIR
    
    mkdir -p $QUL_BUILD_DIR
    cd $QUL_BUILD_DIR
    
    cmake $QUL_ROOT -DQul_ROOT=$QUL_ROOT -G "Ninja" -DCMAKE_INSTALL_PREFIX=$QUL_INSTALL_DIR -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE -DQUL_TARGET_TOOLCHAIN_DIR=$QUL_TARGET_TOOLCHAIN_DIR -DQUL_BOARD_SDK_DIR=$QUL_BOARD_SDK_DIR -DQUL_PLATFORM=$QUL_PLATFORM_NAME -DQUL_BUILD_DEMOS=OFF -DQUL_BUILD_EXAMPLES=OFF -DQUL_GENERATORS=$QUL_ROOT/lib/cmake/Qul/QulGenerators.cmake -DFREERTOS_DIR=$FREERTOS_DIR -DQUL_VERSION=$QUL_VERSION
    
    cmake --build .
    cmake --install .
    
    # Before the next step, update QUL_ROOT and CMAKE_TOOLCHAIN_FILE to point to your custom version
    export QUL_ROOT=$QUL_INSTALL_DIR
    export CMAKE_TOOLCHAIN_FILE=$QUL_INSTALL_DIR/lib/cmake/Qul/toolchain/armgcc.cmake
    set QUL_VERSION=2.8.0
    set QUL_INSTALL_DIR=some\path\custom_qul
    set QUL_BUILD_DIR=some\path\custom_qul_build
    
    mkdir %QUL_INSTALL_DIR%
    
    xcopy %QUL_ROOT% %QUL_INSTALL_DIR% /e /y /q
    
    mkdir %QUL_BUILD_DIR%
    cd %QUL_BUILD_DIR%
    
    cmake %QUL_ROOT% -DQul_ROOT=%QUL_ROOT% -G "Ninja" -DCMAKE_INSTALL_PREFIX=%QUL_INSTALL_DIR% -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=%CMAKE_TOOLCHAIN_FILE% -DQUL_TARGET_TOOLCHAIN_DIR=%QUL_TARGET_TOOLCHAIN_DIR% -DQUL_BOARD_SDK_DIR=%QUL_BOARD_SDK_DIR% -DQUL_PLATFORM=%QUL_PLATFORM_NAME% -DQUL_BUILD_DEMOS=OFF -DQUL_BUILD_EXAMPLES=OFF -DQUL_GENERATORS=%QUL_ROOT%/lib/cmake/Qul/QulGenerators.cmake -DFREERTOS_DIR=%FREERTOS_DIR% -DQUL_VERSION=%QUL_VERSION%
    
    cmake --build .
    cmake --install .
    
    rem Before the next step, update QUL_ROOT and CMAKE_TOOLCHAIN_FILE to point to your custom version
    set QUL_ROOT=%QUL_INSTALL_DIR%
    set CMAKE_TOOLCHAIN_FILE=%QUL_INSTALL_DIR%/lib/cmake/Qul/toolchain/armgcc.cmake
  4. 通过将QUL_ROOT设置为安装目录,使用自定义构建的Qt Quick Ultralite来构建您的应用。由于安装步骤不会安装QulGenerators.cmake,因此QUL_ROOT_ORIGINAL需要指向原始的Qt Quick Ultralite安装文件夹。
    # You can use the minimal example from the SDK.
    export APP_DIR=some/path/custom_app
    export QUL_ROOT=some/path/custom_qul
    export QUL_ROOT_ORIGINAL=some/path/original_qul
    mkdir $APP_DIR
    cd $APP_DIR
    mkdir build
    cd build
    
    cmake .. -G "Ninja" -DQul_ROOT=$QUL_ROOT -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE -DQUL_TARGET_TOOLCHAIN_DIR=$QUL_TARGET_TOOLCHAIN_DIR -DQUL_GENERATORS=$QUL_ROOT_ORIGINAL/lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM=$QUL_PLATFORM_NAME -DQUL_BOARD_SDK_DIR=$QUL_BOARD_SDK_DIR
    
    cmake --build .
    cmake --build . --target flash_<TARGET_NAME>
    rem You can use the minimal example from the SDK.
    set APP_DIR=some\path\custom_app
    set QUL_ROOT=some\path\custom_qul
    set QUL_ROOT_ORIGINAL=some\path\original_qul
    mkdir %APP_DIR%
    cd %APP_DIR%
    mkdir build
    cd build
    
    cmake .. -G "Ninja" -DQul_ROOT=%QUL_ROOT% -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=%CMAKE_TOOLCHAIN_FILE% -DQUL_TARGET_TOOLCHAIN_DIR=%QUL_TARGET_TOOLCHAIN_DIR% -DQUL_GENERATORS=%QUL_ROOT_ORIGINAL%/lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM=%QUL_PLATFORM_NAME% -DQUL_BOARD_SDK_DIR=%QUL_BOARD_SDK_DIR%
    
    cmake --build .
    cmake --build . --target flash_<TARGET_NAME>

注意:在 Qt Quick Ultralite 项目中,默认将 CMAKE_BUILD_TYPE 设置为 MinSizeRelMinSizeRel 是用于与 Qt Quick Ultralite 一起提供的预构建平台库的构建类型。要更改构建类型(例如,设置为 Release),请使用具有 -DCMAKE_BUILD_TYPE=Release 选项的 CMake。有关更多信息,请参阅 CMAKE_BUILD_TYPE

在某些Qt许可证下可用。
了解更多信息。