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 :
Classiquement je travaillais avec un Makefile pour compiler tous les exécutables de tests au cours de mon développement (ça je sais faire !)
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
Pour tester les thread, je me suis fait un petit exécutable a deux balles :
Ensuite qmake -project avec entre autre
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(); }
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 !
Partager