1 votes

L'IDE Ubuntu tente d'exécuter les projets ARM basés sur CMake sur le bureau plutôt que sur le périphérique : bug ou quoi ?

J'ai importé un projet basé sur CMake dans l'IDE Ubuntu. Il utilise un simple C++, sans composants QML. Lorsque j'essaie de l'exécuter, il ne se déploie pas sur le périphérique, mais s'exécute sur le bureau (sans succès, indiquant qu'il ne peut pas trouver la bibliothèque ld d'armhf), même si j'ai sélectionné le SDK d'armhf et dans l'onglet Kits, mon périphérique est sélectionné pour le kit actuel, et l'infobulle dans le coin inférieur gauche montre que l'application va être installée sur le périphérique.

Lorsque j'ouvre l'onglet Run dans les paramètres du projet, mon projet basé sur CMake diffère des projets basés sur QMake en ce qu'il a les champs "Command Line Arguments" et "Current Working Directory", mais pas "Override app if installed" et "Uninstall app after debugging" (je ne me souviens plus du texte exact maintenant). J'en conclus que l'IDE d'Ubuntu ne voit pas mon application comme étant destinée à Ubuntu Touch, mais comme étant destinée au bureau. Qu'est-ce qui fait qu'un projet basé sur CMake est considéré comme ciblant Ubuntu Touch par l'IDE ?

Est-il possible d'exécuter un projet basé sur CMake sans QML sur un appareil ? Le SDK n'a pas de modèle pour ce cas d'utilisation : tous les modèles basés sur CMake utilisent QML, et le seul projet C++ simple (QtQuick App) utilise QMake.

Je n'ai pas de tels problèmes avec les projets basés sur QMake, et actuellement j'utilise CMake pour construire une bibliothèque au lieu d'un exécutable, et ensuite la lier en exécutable avec un projet QMake factice. Mais cela semble être une astuce.

0voto

zbenjamin Points 21

Ok, donc si vous utilisez le kit de bureau et que cmake se plaint qu'il ne peut pas trouver les outils armhf, vous n'avez probablement pas installé cmake sur le bureau en premier lieu (il y a un problème avec les dépendances que nous essayons de résoudre en ce moment) et QtCreator utilise une installation de cmake à partir d'un des chroots de clics que vous avez créés pour le support des périphériques.

Alors que faire :

  • Fermer l'IDE Ubuntu SDK
  • Installez cmake "apt install cmake".
  • Démarrer l'IDE Ubuntu SDK
  • allez dans : Options -> Build & Run et cliquez sur l'onglet CMake
  • s'assurer que /usr/bin/cmake est sélectionné par défaut
  • Ouvrez l'onglet Kits, sélectionnez-y votre Desktop Kit et assurez-vous que /usr/bin/cmake est utilisé comme outil cmake.
  • Supprimez les dossiers de construction de vos projets et construisez à nouveau.

Il n'est pas nécessaire de modifier les kits pour les appareils car ils sont automatiquement vérifiés à chaque démarrage.

Si vous voulez empaqueter votre propre projet cmake, vous devez vous assurer qu'il est empaqueté correctement pour le téléphone. Votre meilleure chance est de consulter l'un des modèles originaux du SDK d'ubuntu pour voir comment cela est fait.

0voto

MaxEd Points 111

OK, après de nombreuses expériences, j'ai trouvé ce que j'ai mal fait.

Donc, pour que l'IDE Ubuntu crée une configuration qui exécute votre projet basé sur CMake sur le périphérique, tout ce dont vous avez besoin est d'avoir la variable UBUNTU_MANIFEST_FILE qui doit être définie dans votre CMakeLists.txt, ET elle doit explicitement être marquée CACHE INTERNAL. C'est assez évident quand on sait comment fonctionne le plug-in Ubuntu QtCreator, mais sinon, pas vraiment.

Donc, il suffit d'ajouter

set(UBUNTU_MANIFEST_PATH "manifest.json" CACHE INTERNAL "Path to manifest file")

à votre CMakeLists.txt et vous êtes presque prêt.

Cependant, j'ai également rencontré un problème : cela ne fonctionnera pas si je spécifie "${CMAKE_SOURCE_DIR}/manifest.json" comme UBUNTU_MANIFEST_PATH, même si le fichier est exactement là.

Le problème, c'est que l'IDE Ubuntu crée toujours DEUX configurations d'exécution pour le projet. La première, celle par défaut, dont le nom est basé sur le nom de votre cible exécutable, essaiera toujours d'exécuter le code armhf sur le bureau. Je pense que c'est un bug.

Le second a un nom qui dépend de ce que vous avez écrit dans la section "hooks" de votre fichier .desktop. Si ce nom est égal au nom de l'exécutable, alors cette configuration aura un "2" ajouté (i.e. cmake_test2). Cette deuxième configuration est celle à utiliser - elle exécute le projet sur le dispositif, mais vous devez la choisir dans la section "Run" de la page "Projects" - par défaut, la mauvaise configuration d'exécution est sélectionnée.

Dans l'ensemble, il semble que le support de CMake dans l'IDE d'Ubuntu soit encore un peu fragile/buggy.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X