IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Qt 5 transport des exécutable


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Qt 5 transport des exécutable
    Bonjour à tous, je suis nouveau sur Qt 5 et je suis sur Mac os, et j'ai un petit souci avec la compilation. Pour faire simple quand je crée un nouveau projet je le compile et je peux l'exécuter sur ma machine jusqu'à la tous va bien, mais quand je passe le programme sur un autre pc la impossible de l'exécuter, sous windows il faut les dll mais sous Mac os comment ça se passe ? Merci beaucoup pour votre réponse

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    La première chose que tu dois comprendre, c'est que, a priori, une application compilée pour fonctionner sous mac ne fonctionnera pas sous windows ou sous linux, et inversement.

    Si tu veux que ton application fonctionne également sous windows, par exemple, tu devra la compiler de manière spécifique pour qu'elle puisse le faire.

    Il est possible de compiler une application sous un système (par exemple sous mac) pour qu'elle puisse être utilisée sous windows. Cela s'appelle une compilation croisée (cross compilation). Evidemment, le résultat que l'on obtient à ce moment là fonctionne sous... windows, mais pas sous mac.

    Il n'est pas très difficile de faire une compilation croisée, car il suffit généralement d'indiquer explicitement que l'on veut utiliser le compilateur qui créera une application pour tel ou pour tel système. Mais l'installation des différents outils et leur configuration est une étape lourde et fastidieuse, qui ne demande qu'à échouer si on ne fait pas les choses dans le bon ordre.

    C'est la raison pour laquelle on essaye souvent de disposer de tous les systèmes d'exploitation pour lesquels on souhaite créer notre application, soit sous la forme d'un "multi boot" (il faut à chaque fois redémarrer l'ordinateur sur le système sur lequel on souhaite travailler), soit sous la forme d'une machine virtuelle.

    De cette manière, on peut compiler notre application pour qu'elle fonctionne sous mac en étant sous mac et on peut la compiler (voir la tester) sous windows en étant sous windows.

    Ensuite, le deuxième problème auquel on est confronté est l'installation proprement dite: quand on développe une application, nous sommes dans un "environnement contrôlé" dans le sens où nous avons pris la peine d'installer "tout ce qui peut être nécessaire" à notre travail.

    Mais, quand on souhaite utiliser cette application sur un autre ordinateur, on ne peut absolument pas avoir la certitude qu'il contient exactement ce dont nous disposons sur le notre; ni si les "éléments communs" (ceux qui se trouvent sur les deux ordinateurs) se trouvent à la même place.

    On ne peut donc pas se contenter de copier l'application que l'on a créée à l'endroit où on souhaite la placer, et espérer qu'elle pourra retrouver "tout ce dont elle a besoin": il faut, littéralement, la faire arriver sur place avec "armes et bagages".

    Le plus facile est alors de créer un "installateur" qui se chargera de copier non seulement l'application à l'endroit où elle doit aller, mais aussi tout ce dont elle a besoin à l'endroit "où elle s'attend à le trouver". Il s'agit, le plus souvent, d'une archive auto-extractible un peut améliorée.

    il est "assez facile" de faire installer ce qu'il faut pour qu'une application fonctionne sous Qt sous linux ou sous mac: généralement, il "suffit" d'indiquer les dépendances de l'application dans le paquetage que l'on crée pour que, lorsque "quelqu'un" voudra l'installer, le gestionnaire de paquets fasse son job et les rajoute automatiquement.

    Les choses sont "un peu plus compliquées" sous windows, parce qu'il n'y a pas de gestionnaire de paquet. Tu dois donc veiller par toi-même à rajouter effectivement toutes les dll dont ton application a besoin pour fonctionner.

    Par chance, il existe sous windows un outil nommé qtdeploy que tu peux utiliser et qui te permettra de trouver les dll propres à Qt dont ton application a besoin. Il te suffira donc de créer une archive avec toutes ces dll et l'application elle même, de la copier sur le système sur lequel tu souhaites installer ton application, et d'en extraire le contenu pour pouvoir utiliser ton application.

    Au final: si tu veux utiliser ton application sur un système donné, tu dois
    1. compiler ton application de manière spécifique pour ce système
    2. t'assurer que les bibliothèque dynamiques (shared libraries sous linux/mac; dll sous windows) dont tu as besoin sont présentes
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bonjour, et merci pour ta réponse actuellement je ne développe que sous Mac os et pour Mac os donc linux et windows je m'en fiche un peu, je pense que lorsque je copie mon programme mes librairie ne suivent pas et le problème doit venir de la, ma question et comment je peux copier les librairies avec mon programme pour qu'il tourne sous tous les Mac os ? Merci beaucoup

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Excuses moi, telle qu'elle était exprimée, j'ai cru que tu demandais comment transférer ton application Mac sous windows. D'où les explications données

    Pour résoudre ton problème: créée un paquet d'installation de ton application. Ce sera beaucoup plus facile à mon sens.

    Car, si je ne m'abuse (vu que je n'ai pas de Mac, je suis pas le mieux placé pour savoir ) , Mac Os utilise un système de gestion des paquets à peu près comme n'importe quelle distribution de linux digne de ce nom, non

    Si tu définis correctement les dépendances de ton projet (et que je ne me trompe pas sur Mac Os ), le script d'installation se chargera tout seul de vérifier si elles sont présentes sur la machine cible ou non, et se chargera de les télécharger en cas de besoin

    Tu devrais pouvoir t'aider d'outils comme CMake (que tu utilises peut-être déjà d'ailleurs) pour générer l'installateur de manière automatique.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bonjour, et merci encore pour votre aide. Effectivement je pense que crée un paquet serai là bonne solution, mais étant tous nouveau sur Qt comment je peux créer se paquet et rassembler les librairies ? À tu un tuto ? Merci beaucoup

Discussions similaires

  1. [Lazarus] Diminuer la taille des exécutables
    Par Clandestino dans le forum Lazarus
    Réponses: 7
    Dernier message: 16/07/2009, 15h29
  2. [JMS] Transporter des fichiers xml sur jms
    Par snetechen dans le forum Java EE
    Réponses: 5
    Dernier message: 16/06/2006, 11h47
  3. [PowerBuilder 10] Autonomie des exécutables
    Par digital prophecy dans le forum Powerbuilder
    Réponses: 4
    Dernier message: 11/06/2006, 23h59
  4. Pur débutant en C/C++ : Taille des exécutables ?
    Par ChrisPM dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 20/10/2005, 18h39
  5. format PE des exécutables Windows
    Par GMI3 dans le forum Windows
    Réponses: 3
    Dernier message: 12/12/2003, 02h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo