Compilation de Qt pour QNX
Configuration du SDP QNX
La compilation de Qt 6 nécessite le téléchargement et l'installation d'un SDP QNX à partir du site web de QNX.
Remarque : une licence appropriée est requise. Contactez QNX pour plus d'informations.
Remarque : n'ajoutezpas les paquets Wayland expérimentaux du QNX Software Center à votre installation du SDP 8.0 de QNX. Ils ne sont pas nécessaires à la compilation de Qt, mais peuvent provoquer un conflit d'en-têtes lors de la configuration d'une compilation Qt.
Le compilateur et les autres composants de la chaîne d'outils sont fournis dans les paquets SDP. Initialisez votre environnement de compilation en exécutant le script d'installation QNX depuis le dossier d'installation de votre SDP dans un terminal, comme suit :
source qnxsdp-env.shVous pouvez également exécuter qnxsdp-env.bat dans l'invite de commande Windows.
Compilation sur l’hôte
Une compilation sur l’hôte de Qt doit être disponible pour effectuer une compilation croisée de Qt. En effet, pendant la compilation, certains outils (tels que moc, rcc, qmlcachegen et qsb) sont appelés depuis la compilation sur l’hôte. Vous disposez de deux options :
- Compiler les sources de Qt pour l’hôte ou
- installer la compilation hôte à l’aide de Qt Online Installer.
Création d’un fichier de chaîne d’outils pour QNX
Pour effectuer une compilation croisée d’un projet avec CMake, vous avez besoin d’un fichier de chaîne d’outils. Ce fichier au format CMake définit les valeurs correctes pour le nom de la plateforme, le compilateur/l’éditeur de liens et de nombreux autres paramètres spécifiques à la chaîne d’outils. À titre de référence, vous trouverez les fichiers de chaîne d’outils utilisés en CI dans le paquet source coin/provisioning/common/shared/cmake_toolchain_files
set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_SYSTEM_PROCESSOR armle-v7)
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})Le fichier d’exemple concerne armv7le. Les autres possibilités sont aarch64le et x86_64, en fonction de votre architecture cible.
Remarque : CMake ne transmet pas correctement les variables STRIP, AR, RANLIB et NM sous QNX ; si vous les utilisez, vous devez donc les spécifier séparément dans un fichier de chaîne d’outils.
Configuration et compilation de Qt pour QNX
Pour configurer et compiler Qt pour QNX, vous avez besoin des éléments suivants :
- Les outils de compilation de Qt, tels que décrits dans la section « Compilation des sources Qt », doivent être installés et opérationnels sur votre plate-forme hôte.
- Le fichier de chaîne d'outils, dans cet exemple
$HOME/qnx.cmake. - Le code source de Qt soit extrait ou installé, dans cet exemple sous
$HOME/qt. - La version de Qt compilée sur l’hôte, dans cet exemple
$HOME/qt-host. - Préfixe de l'emplacement d'installation de la version de Qt sur le système local, dans cet exemple
$HOME/qnx-install. - Préfixe de l'emplacement de déploiement de la version de Qt sur le périphérique cible, dans cet exemple
/qt.
Après avoir créé le répertoire build et vous y être rendu, exécutez la commande suivante :
$HOME/qt/configure -nomake examples -nomake tests \
-qt-host-path $HOME/qt-host \
-extprefix $HOME/qnx-install \
-prefix /qt \
-- -DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake \
-DCMAKE_SYSTEM_VERSION=710 \
$HOME/qtDepuis Qt 6, l’outil `configure` est un wrapper autour de CMake et, en pratique, cette commande `configure` équivaut à l’appel CMake direct suivant :
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 \
-DCMAKE_SYSTEM_VERSION=710 \
$HOME/qtChoisissez la valeur de CMAKE_SYSTEM_VERSION en fonction de votre version de QNX SDP :
- 710 pour QNX SDP 7.1
- 800 pour QNX SDP 8.0
Si vous travaillez uniquement avec une seule version de QNX, vous pouvez également définir CMAKE_SYSTEM_VERSION dans votre fichier de chaîne d’outils.
Remarque : lors de la compilation sous Windows, les en-têtes précompilés (PCH) doivent être explicitement désactivés, car leur activation provoque un plantage du compilateur QNX. Pour désactiver les PCH, utilisez l’option de configuration ` -no-pch`.
Remarque : si vous utilisez QNX SDP 8.0, ignorez les modules non pris en charge et leurs modules dépendants à l’aide des options de configuration -skip qtremoteobjects -skip qtinterfaceframework.
Une fois la configuration terminée sans erreur, compilez Qt en exécutant la commande suivante :
cmake --build . --parallelRemarque : le compilateurQNX peut nécessiter davantage de mémoire que le compilateur utilisé pour la compilation sur l’hôte. Utilisez ` --parallel <numOfProcesses> ` pour limiter le nombre maximal de processus simultanés lors de la compilation.
Une fois la compilation terminée, exécutez la commande suivante :
cmake --install .Cela installe les résultats dans $HOME/qnx-install. De là, vous pouvez déployer la version de Qt sur l’appareil cible à l’aide de Qt Creator, directement via scp ou par une autre méthode. Le paramètre de configuration -prefix (/qt dans l’exemple) définit l’emplacement de déploiement sur l’appareil cible.
Compilation d’applications pour l’appareil cible
Une fois la compilation Qt terminée et celle-ci installée dans l’emplacement de transit, vous pouvez compiler des exemples ou des applications.
Avec CMake, utilisez le script généré ` qt-cmake ` situé dans le répertoire `bin` de l’emplacement de transit ($HOME/qnx-install dans l’exemple) pour configurer la compilation de l’application, puis exécutez `ninja`. Par exemple :
$HOME/qnx-install/bin/qt-cmake .
cmake --build .Vous pouvez ensuite déployer le binaire de l’application résultant sur l’appareil. L’utilisation du script d’aide qt-cmake est pratique car elle garantit que le fichier de la chaîne d’outils utilisé pour la compilation de Qt est chargé ; il n’est donc pas nécessaire de le spécifier à chaque fois pour chaque application.
Si vous utilisez une installation Qt qui n’a pas été compilée sur votre machine, qt-cmake doit connaître l’emplacement du fichier de chaîne d’outils CMake pour la plateforme cible.
Dans ce cas, indiquez à qt-cmake de charger en chaîne un fichier de chaîne d’outils personnalisé en définissant la variable ` QT_CHAINLOAD_TOOLCHAIN_FILE ` comme suit :
$HOME/qnx-install/bin/qt-cmake -DQT_CHAINLOAD_TOOLCHAIN_FILE=$HOME/qnx.cmake .Lors de la compilation d’applications dans Qt Creator à l’aide d’une installation Qt qui n’a pas été compilée sur votre machine, la variable CMAKE_TOOLCHAIN_FILE, pointant vers le fichier de chaîne d’outils local, doit être ajoutée à la configuration du kit (Édition > Préférences > Kits).
Pour plus d’informations sur la connexion et l’ajout de kits pour les appareils QNX lors de l’utilisation d’ Qt Creator, consultez la section Connexion d’appareils QNX.
Bibliothèques tierces
Assurez-vous que votre image système contient les bibliothèques tierces supplémentaires suivantes, qui ne sont pas toujours incluses dans les images minimales du système d’exploitation temps réel QNX Neutrino :
libfontconfiglibfreetypelibiconvlibicui18nlibicudatalibicuuclibpng16libxml2libsqlite3libssllibcryptolibzstd
Remarque : il ne s'agit pas d'une liste exhaustive des bibliothèques partagées utilisées par Qt sur le système d'exploitation QNX Neutrino. De nombreuses bibliothèques partagées sont déjà disponibles dans une image du système d'exploitation standard ou incluses par d'autres composants du système, par exemple Screen.
Voir également Options de configuration de Qt et Configuration de Qt.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.