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

Qt Discussion :

Comment obtenir un exécutable ?


Sujet :

Qt

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut Comment obtenir un exécutable ?
    En fait je cherche comment obtenir un exécutable à partir duquel je ne suis pas obligée d'installer la bibliothèque Qt dans un pc pour que mon application marche?

  2. #2
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Pour faire ça, il faut que ton application trouve quand même les lib de Qt quelque part . Si tu ne souhaites pas installer Qt dans la machine cible, alors tu dois récupérer les lib correspondante de Qt (QtCore par exemple...). Soit par copie, ou tu fais un installeur qui les copiera pour toi.
    D'où le fait qu'on ne voit jamais ce mécanisme lorsqu'on installe un logiciel. Certains petits logiciel, ou anciens embarquent dans le même répertoire des lib.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut
    En suivant le document du lien suivant :http://qt-quarterly.developpez.com/q...oying-windows/ ,
    je n'ai pas su comment faire avec la ligne de commande suivante :

    cd %QTDIR%
    configure -static <autres options dont vous avez besoin>

  4. #4
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Il faut que tu te rende dans le dossier où se trouve Qt
    C:\Qt\4.5.2\ par exemple (chemin différent si tu as installé le SDK).
    Et que tu fasse un configure.exe -static pour compiler les lib de Qt en statique.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Il faut que tu te rende dans le dossier où se trouve Qt
    C:\Qt\4.5.2\ par exemple (chemin différent si tu as installé le SDK).
    Et que tu fasse un configure.exe -static pour compiler les lib de Qt en statique.
    Mais ce n'est pas la seule solution pour exporter ton application. Compiler en static permet de tout intégrer dans l'éxécutable, plus de dépendances de librairies. Mais tu perds l'avantage des librairies partagées.

    G.

  6. #6
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Citation Envoyé par Gulish Voir le message
    Mais ce n'est pas la seule solution pour exporter ton application. Compiler en static permet de tout intégrer dans l'éxécutable, plus de dépendances de librairies. Mais tu perds l'avantage des librairies partagées.

    G.
    +1

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut
    An fait mon application est bâtit sur une architecture à plugins de ce fait j'ai un dossier nommé "plugins qui contient les différents dlls que mon application utilise.
    Comment dois je procéder pour déployer son exécutable?
    Reste -t-il valable la commande "configure -static" dans ce cas?

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Si tu utilises d'autres librairies, pour moi lier statiquement Qt ne sert plus à rien. Pour déployer ton application, sans la recompiler, il te suffit de copier l'éxécutable et toutes les librairies (dlls) nécessaire au fonctionnement de ton application. Le plus dur dans tout cela, est bien d'identifier *toutes* les librairies.

    -il y'a d'abord celles de Qt (QtGui et QtCore au moins, + d'autres si ton application utilise d'autres modules, ou des images non incluses à la compilation (et donc tu auras besoin des dlls d'images de Qt pour les utiliser).
    -il y'a ensuite toutes les dlls "annexes" de ton application. Seules toi connait celles que tu utilises dans ton application. Attention, ces librairies sont peut etre elles meme dépendants d'autres librairies, qu'il faudra donc inclue également.
    -il y a ensuite des dlls associés à ton compilateur, elles sont souvent dans le dossier d'install de ton compilateur, dans un dossier avec un nom du genre "redist". Si tu nous indiques ton compilateur, on pourra sans doute t'aider pour celles ci.
    -il ne reste plus qu'à spécifier à ton application ou seront situées ces dlls lorsqu'elles se lancera. Le plus simple, selon moi, est d'ajouter cette ligne dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDir::setCurrent(QCoreApplication::applicationDirPath());
    puis de mettre toutes les dlls dans le même répertoire que ton executable.

    Mon explication est un peu brouillon, j'espere que tu arriveras à en faire quelquechose. Bien sur, ton application ne marchera correctement que sur les machines similaires à la tienne (le C++ est un langage compilé).

    G.

  9. #9
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Tu peux utiliser le logiciel Depends sur ton application.
    Il te dira toutes les dll dont il a besoin pour fonctionner.

  10. #10
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par maroua_mm Voir le message
    An fait mon application est bâtit sur une architecture à plugins de ce fait j'ai un dossier nommé "plugins qui contient les différents dlls que mon application utilise.
    Comment dois je procéder pour déployer son exécutable?
    Reste -t-il valable la commande "configure -static" dans ce cas?
    Tout dépend de ce que font tes plugins. S'ils utilisent Qt, alors c'est quasi indispensable d'utiliser Qt sous forme de dlls car tes plugins vont échanger des objets Qt avec ton exe. Sinon, c'est pas nécessaire. Mais note que Qt te facilite la réalisation de plugin, je sais pas si tu utilises cela, mais ça serait une bonne idée (donc pas de compilation statique). Fais aussi une recherche sur la fonctionnalité "build key" de Qt.

    Citation Envoyé par Gulish Voir le message
    Si tu utilises d'autres librairies, pour moi lier statiquement Qt ne sert plus à rien. Pour déployer ton application, sans la recompiler, il te suffit de copier l'éxécutable et toutes les librairies (dlls) nécessaire au fonctionnement de ton application. Le plus dur dans tout cela, est bien d'identifier *toutes* les librairies.
    Si on developpe sous Windows avec VC++, ce n'est pas suffisant. Les dlls de VC++ doivent être enregistrées de manière spéciale sous Windows. Il faut fournir un installeur qui fait ça... ou alors compiler de manière à utiliser les libs VC++ de manière statique. Ce n'est pas possible en "standard" avec Qt, mais CuteBuilder permet de simplifier cela.

    Citation Envoyé par Gulish Voir le message
    -il ne reste plus qu'à spécifier à ton application ou seront situées ces dlls lorsqu'elles se lancera. Le plus simple, selon moi, est d'ajouter cette ligne dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDir::setCurrent(QCoreApplication::applicationDirPath());
    puis de mettre toutes les dlls dans le même répertoire que ton executable.
    C'est un peu bidouille
    QCoreApplication::addLibraryPath() est faite pour ça.

    Voir aussi la doc de QLibrary et QPluginLoader.

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Envoyé par Gulish
    Si tu utilises d'autres librairies, pour moi lier statiquement Qt ne sert plus à rien. Pour déployer ton application, sans la recompiler, il te suffit de copier l'éxécutable et toutes les librairies (dlls) nécessaire au fonctionnement de ton application. Le plus dur dans tout cela, est bien d'identifier *toutes* les librairies.
    Si on developpe sous Windows avec VC++, ce n'est pas suffisant. Les dlls de VC++ doivent être enregistrées de manière spéciale sous Windows. Il faut fournir un installeur qui fait ça... ou alors compiler de manière à utiliser les libs VC++ de manière statique. Ce n'est pas possible en "standard" avec Qt, mais CuteBuilder permet de simplifier cela.
    Je ne sais pas avec quelle version de VC tu travailles, mais pour ma part, avec l'express09 sous XP, ça a marché plusieurs fois en copiant les 3 dlls qui vont bien. Après si tu utilises .Net c'est différent.

    G.

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Gulish Voir le message
    Je ne sais pas avec quelle version de VC tu travailles, mais pour ma part, avec l'express09 sous XP, ça a marché plusieurs fois en copiant les 3 dlls qui vont bien. Après si tu utilises .Net c'est différent.
    Je fait aussi pareil.
    En faite y as deux choix :
    1- tu fait installer le redist de ta version de visual
    2- tu copie les dll (et le manifest il me semble) qu'il te faut

    Un peu de doc :
    http://qt.developpez.com/doc/4.6-sna...cation-package

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/06/2015, 09h25
  2. Comment obtenir simplement un exécutable ?
    Par fd_caramba dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/12/2008, 19h39
  3. Réponses: 4
    Dernier message: 30/10/2008, 11h50
  4. Réponses: 1
    Dernier message: 25/06/2005, 09h40
  5. Comment obtenir la liste des paramètres d'une SP ?
    Par Le Gritche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2003, 16h54

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