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 :

compilation d'un simple hello_qt sous linux en ligne de commande


Sujet :

Qt

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 141
    Points : 59
    Points
    59
    Par défaut compilation d'un simple hello_qt sous linux en ligne de commande
    Bonjour,


    j'essaye de compiler ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #include <QApplication>
    #include <QFont>
    #include <QPushButton>
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        QPushButton quit("Quit");
        quit.resize(75, 30);
        quit.setFont(QFont("Times", 18, QFont::Bold));
     
        QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
     
        quit.show();
        return app.exec();
    }
    avec la ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g++ -g -o test -I /usr/lib/qt-3.3/include/ -L /usr/lib/qt-3.3/lib test.cpp -lQtCore -lqt-mt -lQtGui

    il me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QApplication : aucun fichier ou repertoire de ce type
    et quand je verifies dans mes fichier includes il y'a un qapplication.h et non QApplication..
    (si quelqu'un veut bien m'expliquer pourquoi ?! )
    du coup je change dans mon code et met un include qapplication.h .
    mais là du coup il a un problem avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    no matching function to call to QPushButton : QPushButton (const char[5])
    et donc j'ai mis en commentaire toutes les lignes qui font appelle à QPushButton
    et là j'ai un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    usr/bin/ld cannot find -lQtCore
    cooecte2 :ld a retourné 1 code d'etat d'excution

    si quelqu'un peut m'aider..
    deja, je ne suis meme pas sure quelles lib mettre pour l'edition de lien (j'ai mis lQtCore ect au hasard ..)

    Merci

  2. #2
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    Pour ta dernière erreur, il ne trouve pas ta lib, donc soit sa nomenclature est mauvaise, soit son chemin d'accès est incorrect.

    Pour le QApplication, essaye plutôt d'inclure "qapplication.h" puisque tu es sous une (très) vieille version de Qt. Idem pour les autres header.

    Pour l'erreur avec QPushButton, celui-ci prend un QString en paramètre, pas un const char*. Qt 4 et > font la conversion const char* => QString tout seul, pour ce qui est de Qt3.x, je n'en sais rien.

    J'arrive aux deux questions qui tuent :
    - Pourquoi utiliser Qt 3.x ?
    - Pourquoi ne pas utiliser qmake?

    Tu sembles utiliser un bout de code récent (et donc certainement codé pour du Qt 4.x) avec une (très) vieille version de Qt. Ceci ne me semble pas être une bonne idée => printf(questionsQuiTuent).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 35
    Points
    35
    Par défaut
    Si tu ne t'en sors pas avec g++, essaies donc avec le compilateur de Qt nommé qmake.
    La documentation officielle est ici : http://qt.developpez.com/doc/4.3/qmake-manual/

    EDIT: la précipitation n'est pas synonyme de vitesse, lastest version http://qt.developpez.com/doc/4.5/qmake-manual/

  4. #4
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    Je dirais même ici pour une version à jour avec la dernière version de Qt (4.5) :

    http://qt.developpez.com/doc/4.5/qmake-manual/

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 141
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Niak74 Voir le message
    Pour ta dernière erreur, il ne trouve pas ta lib, donc soit sa nomenclature est mauvaise, soit son chemin d'accès est incorrect.

    Pour le QApplication, essaye plutôt d'inclure "qapplication.h" puisque tu es sous une (très) vieille version de Qt. Idem pour les autres header.

    Pour l'erreur avec QPushButton, celui-ci prend un QString en paramètre, pas un const char*. Qt 4 et > font la conversion const char* => QString tout seul, pour ce qui est de Qt3.x, je n'en sais rien.

    J'arrive aux deux questions qui tuent :
    - Pourquoi utiliser Qt 3.x ?
    - Pourquoi ne pas utiliser qmake?

    Tu sembles utiliser un bout de code récent (et donc certainement codé pour du Qt 4.x) avec une (très) vieille version de Qt. Ceci ne me semble pas être une bonne idée => printf(questionsQuiTuent).
    ben enfait,j'ai deja une machine sur laquelle il y'a Qt4,et là enfait c'est pire

    hela@hela-laptop:~$ g++ -g -o test -I /usr/local/Trolltech/Qt-4.5.2/include/Qt -L /usr/local/Trolltech/Qt-4.5.2/lib/ test.cc -lQtCore -lQtGui -lthread
    In file included from test.cc:1:
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qapplication.h:45:37: error: QtCore/qcoreapplication.h: No such file or directory
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qapplication.h:46:31: error: QtGui/qwindowdefs.h: No such file or directory
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qapplication.h:47:27: error: QtCore/qpoint.h: No such file or directory
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qapplication.h:48:26: error: QtCore/qsize.h: No such file or directory
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qapplication.h:49:27: error: QtGui/qcursor.h: No such file or directory
    In file included from test.cc:2:
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qpushbutton.h:45:35: error: QtGui/qabstractbutton.h: No such file or directory
    In file included from test.cc:1:
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qapplication.h:62: error: ‘QT_BEGIN_HEADER’ does not name a type
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qapplication.h:87: error: function definition does not declare parameters
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qapplication.h:387: error: ‘QT_END_NAMESPACE’ does not name a type
    In file included from test.cc:2:
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qpushbutton.h:57: error: function definition does not declare parameters
    /usr/local/Trolltech/Qt-4.5.2/include/Qt/qpushbutton.h:120: error: ‘QT_END_NAMESPACE’ does not name a type
    et quand je regarde par exemple QtGui à la recherche d'un "QtGui/qwindowdefs.h".
    ca suppose deja que QtGui est un repertoire sous le quel se trouve QtGui/qwindowdefs.h..
    et ben c'est loin d'etre le cas,puisque QtGui est un fichier (non un rep)ou il y'a plein d'include..
    c'est la raison pour laquelle je me suis dit,j'essaye avec le Qt3 pour voir..
    ps : meme avec le Qt4,il trouve pas le <QApplication>,mais il y'a un qapplication.h ..

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Pourquoi tu ne veut pas utiliser qmake pour générer tes makefile?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 141
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par yan Voir le message
    Pourquoi tu ne veut pas utiliser qmake pour générer tes makefile?
    parcque je sais pas comment faire (mais là je suis entrain de lire un tuto dessus).
    mais est ce que utilisation de qmake peut resoudre ce problem là ?
    et si enfait j'utilise Qt creator par exemple,j'aurai pas tous ces problems ?
    (je sais pas,je commence à peine avec Qt..)

  8. #8
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    Pour les majuscules/minuscules, c'est normal. De manière générale, QMaClasse fera référence à qmaclasse.h, mais dans certains cas, il fera aussi référence à d'autres headers. C'est la raison pour laquelle il faut se servir de la syntaxe en majuscules (on se fiche de connaitre tous les includes utiles au bon fonctionnement d'une classe).

    Concernant ton filesystem Qt, dans le répertoire d'install, tu es sensé avoir un répertoire include contenant un dossier par module Qt installé (dont QtCore et QtGui).

    Pour info : QApplication se trouve dans le module QtGui et QCoreApplication dans QtCore.


    Je te conseille très fortement d'utiliser qmake (questions qui tuent), qui te simplifiera la tâche en paramétrant correctement ton makefile. Il manque en effet plusieurs options utiles au bon fonctionnement de la compilation sous Qt (comme -DQT_GUI_LIB, -DQT_CORE_LIB ou encore -DQT_SHARED).

    Pour utiliser qmake : créé un fichier .pro (vu la simplicité de ton appli, tu peux l'autogénérer en tapant "qmake -project" dans le répertoire de tes sources). tape ensuite qmake pour exécuter qmake et générer le Makefile, puis make pour l'exécuter.

  9. #9
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    Si tu débute avec Qt, prends le temps de bien lire les différents tutoriel Qt, La FAQ Qt (celle d'ici est bien fournie et est en perpétuelle évolution), et la documentation officielle de Qt (qui est extrêmement bien faite), et tu as de l'aide sur les forums Qt.

    QtCreator peut effectivement t'être d'une grande aide. C'est un IDE très performant et très simple.


    Bon courage, n'hésite pas à poser des questions si tu planches

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 141
    Points : 59
    Points
    59
    Par défaut
    ok,merci à vous tous (c'est sure que j'aurais d'autres question à poser :p )

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/10/2006, 13h55
  2. [Compilation Installation] Php avec apache sous linux
    Par c.tranquille dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 19/06/2006, 13h46
  3. [Forms 10g]Compilation de Forms 10 g sous linux
    Par lido dans le forum Oracle
    Réponses: 2
    Dernier message: 31/01/2006, 09h08
  4. Réponses: 2
    Dernier message: 25/10/2002, 22h19

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