[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:
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:
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 !