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_ROOT
和 QUL_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_64
、mingw_64
或 gcc_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_FILE
、QUL_TARGET_TOOLCHAIN_DIR、QUL_PLATFORM 和 QUL_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
设置为 MinSizeRel
。 MinSizeRel
是用于与 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,并使用它构建应用程序
- 根据入门主题中的说明设置所选目标的开发展环境。
- 根据选择的目标和工具链设置环境变量。例如,以下是在ARM GCC工具链下用于MIMXRT1170-EVKB的开发板上的命令。要为其他平台或工具链构建,请相应地修改
QUL_PLATFORM_NAME
、QUL_BOARD_SDK_DIR
、CMAKE_TOOLCHAIN_FILE
、QUL_TARGET_TOOLCHAIN_DIR
和FREERTOS_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
- 如果您如前所述构建并安装了平台库,请遵循第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
- 通过将
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
设置为 MinSizeRel
。 MinSizeRel
是用于与 Qt Quick Ultralite 一起提供的预构建平台库的构建类型。要更改构建类型(例如,设置为 Release
),请使用具有 -DCMAKE_BUILD_TYPE=Release
选项的 CMake。有关更多信息,请参阅 CMAKE_BUILD_TYPE。
在某些Qt许可证下可用。
了解更多信息。