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

Discussion :

[compilation] Comment compiler plusieurs exécutables avec qmake ?

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [compilation] Comment compiler plusieurs exécutables avec qmake ?
    Bonjour à tous,

    Je travaille actuellement sur un projet C++ avancé depuis déjà plusieurs jours.

    Ayant besoin de Qt pour ses lib thread et réseau, je me lance dans la doc... mais j'ai des problèmes pour compiler ce qui a déjà été fait. Pour faire simple, l'architecture du projet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    bin/ //Les exécutables
    obj/ // pour mettre les .o
    inc/ //ici les .h
    src/ // les .cpp
       classes/ //toutes les classes déjà développées
       test/  //les sources de tous les exécutables de test
    Classiquement je travaillais avec un Makefile pour compiler tous les exécutables de tests au cours de mon développement (ça je sais faire !)

    Pour tester les thread, je me suis fait un petit exécutable a deux balles :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include <QThread>
    #include <iostream>
     
    class MonThread : public QThread {
    public:
      MonThread( const std::string & message ) : _message( message ) { } 
      /* virtual */ void run();
    private:
      std::string _message;
    };
     
    void MonThread::run() {
      int n = 20;
      while (n--) {
        std::cout << _message;
        msleep(100);
      }
    }
     
    int main( int , char * [] )
    {
      MonThread t1("Tic\n");
      MonThread t2("Tac\n");
      t1.start();
      t2.start();
      t1.wait();
      t2.wait();
    }
    Ensuite qmake -project avec entre autre
    QT -= gui

    Et pour finir :
    qmake
    make

    Le problème c'est qu'à la phase de link, le compilateur me dit : multiple definition of `main'
    Logique, il essaye de linker tous les .o de toutes les sources c++ et donc linker aussi les sources des exécutables...

    Bref, étant un grand novice de Qt et qmake, je cherche quelqu'un qui pourrait m'expliquer comment faire pour éviter cela sachant que je n'ai pas trop envie de rebouger toute mon architecture de fichier (travail collaboratif...)

    En passant, comment faire pour que les .o et les exécutables se retrouvent dans le bon dossier ?

    Merci d'avance !

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ben finalement j'ai repris la solution utilisée ici :
    http://www.developpez.net/forums/d64...s-executables/

    Je ne mets pas en résolu, j'attends de voir si une solution meilleure peut être trouvée...

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/07/2009, 13h58
  2. Réponses: 2
    Dernier message: 31/08/2006, 12h33
  3. Réponses: 6
    Dernier message: 19/05/2006, 14h22
  4. makefile ... comment faire plusieurs exécutables !
    Par fregate dans le forum Systèmes de compilation
    Réponses: 9
    Dernier message: 18/12/2005, 16h14
  5. Réponses: 9
    Dernier message: 29/09/2005, 09h38

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