为 QNX 构建 Qt

设置 QNX SDP

构建 Qt 6 需要从 QNX 网站(QNX 网站)下载并安装 QNX SDP 7.1。

注意:需要合适的许可。有关更多信息,请联系 QNX([email protected])。

编译器和其他工具链部分的提供在 SDP 软件包中。通过在终端中运行以下来自您的 SDP 安装文件夹的 QNX 设置脚本来初始化您的构建环境

source qnxsdp-env.sh

主机构建

Qt 的主机构建用于交叉编译 Qt。这是因为,在构建过程中,某些工具(如 mocrccqmlcachegenqsb)都是从主机构建调用的。您有两个选项

  • 为主机编译 Qt 源
  • 使用 Qt 在线安装程序安装主机构建。

但是,建议确保您可以在主机上构建适用于桌面目标的 Qt,因为当为 QNX 编译时也需要相同的工具。

为 QNX 创建工具链文件

要使用 CMake 交叉编译项目,您需要一个工具链文件。此 CMake 语言文件设置了平台名称、编译器/连接器以及许多其他工具链特定项的正确值。作为参考,您可以在来源包 coin/provisioning/common/shared/cmake_toolchain_files 中找到在 CI 中使用的工具链文件。

set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_SYSTEM_PROCESSOR armv7le)
set(arch gcc_ntoarmv7le)

set(CMAKE_C_COMPILER qcc)
set(CMAKE_C_COMPILER_TARGET ${arch})
set(CMAKE_CXX_COMPILER q++)
set(CMAKE_CXX_COMPILER_TARGET ${arch})

set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET};$ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR})

set(CMAKE_SYSROOT $ENV{QNX_TARGET})

示例文件适用于 armv7le。其他可能性是 aarch64lex86_64,具体取决于您的目标架构。

配置和构建适用于 QNX 的 Qt

要配置和构建适用于 QNX 的 Qt,您需要以下内容

  • Building Qt Sources 中所述,为您的主机平台放置和功能正常的构建 Qt 工具。
  • 工具链文件,$HOME/qnx.cmake
  • $HOME/qt 下签出或安装的 Qt 源代码。
  • $HOME/qt-host 中有一个 Qt 的主机构建。
  • 本地系统上的安装位置设置为 $HOME/qnx-install

创建并切换到 build 目录后,运行以下命令

$HOME/qt/configure -nomake examples -nomake tests \
-qt-host-path $HOME/qt_host \
-extprefix qnx_install \
-prefix /qt \
-- -DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
$HOME/qt

自 Qt 6 以来,configure 工具是 CMake 的包装器,在实践中,此 configure 命令相当于以下直接 CMake 调用

cmake -GNinja -DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF \
-DQT_HOST_PATH=$HOME/qt_host \
-DCMAKE_STAGING_PREFIX=$HOME/qnx_install \
-DCMAKE_INSTALL_PREFIX=/qt \
-DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
$HOME/qt

注意:当在 Windows 上构建时,需要显式禁用 PCH(预编译头),因为启用它会导致 QNX 编译器崩溃。要禁用 PCH,请使用配置选项 -no-pch

配置完成后没有错误,然后通过运行以下命令构建 Qt

cmake --build . --parallel

注意:QNX编译器可能需要比用于主机构建的编译器更多的内存。使用--parallel <进程数>来限制构建时并发进程的最大数量。

构建完成后,执行以下操作

cmake --install .

这会将结果安装到$HOME/qnx_install

为目标设备构建应用程序

当您完成Qt构建并且已安装到临时位置后,您可以构建示例或应用程序。

使用CMake,使用本地临时位置(例如示例中的$HOME/qnx_install)bin目录中生成的qt-cmake脚本进行配置,然后运行ninja。例如

$HOME/qnx_install/bin/qt-cmake .
cmake --build .

然后可以将生成应用程序的二进制文件部署到设备上。使用qt-cmake辅助脚本很方便,因为该脚本确保加载了用于构建Qt的工具链文件,因此无需为每个应用程序反复指定它。

如果您正在使用没有在您的机器上构建的Qt安装,qt-cmake需要知道目标平台的CMake工具链文件的位置。

在这种情况下,通过设置以下QT_CHAINLOAD_TOOLCHAIN_FILE变量来指示qt-cmake连锁加载自定义工具链文件:

$HOME/qnx_install/bin/qt-cmake -DQT_CHAINLOAD_TOOLCHAIN_FILE=$HOME/qnx.cmake .

在Qt Creator中使用未在您的电脑上构建的Qt安装构建应用程序时,需要将指向本地工具链文件的CMAKE_TOOLCHAIN_FILE变量添加到工具配置(编辑 > 首选项 > 工具)中。

有关使用Qt Creator时连接和添加QNX设备的更多信息,请参见连接QNX设备

第三方库

请确保您的系统映像包含以下额外的第三方库,这些库不一定包含在基本的QNX Neutrino RTOS映像中

  • libfontconfig
  • libfreetype
  • libiconv
  • libicui18n
  • libicudata
  • libicuuc
  • libpng14
  • libxml2
  • libsqlite3
  • libssl
  • libcrypto

注意:这不是Qt在QNX Neutrino操作系统上使用的所有共享库的完整列表。在典型的操作系统映像中已提供多个共享库,或包含在其他系统部分中,例如Screen

另请参阅Qt配置选项配置Qt

© 2024 Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。本提供的文档根据自由软件基金会发布的GNU自由文档许可证第1.3版的条款进行许可。Qt及其相关标志是芬兰的Qt公司及其在世界各地的商标。所有其他商标均为各自所有者的财产。