Bonjour,

Je viens de créer un nouveau projet Qt et j'aimerais dans ce projet séparer les sources et les headers dans des sous dossiers, pour bien organiser l'arborescence des fichiers. Je m'explique : je veux mettre tous les fichiers .cpp dans le dossier src/, les fichiers .h dans le dossier include/, les fichiers .o dans le dossier obj/ et les binaires dans le dossier bin/. Jusque là aucun soucis. J'ai ensuite configuré mon projet en indiquant les dossiers dans mon fichier projet.pro, puis générer le makefile, et compiler le projet, aucun soucis.

Le problème est le suivant : lorsque je modifie un fichier .h, et que je relance un build, make me dit que la cible est à jour et qu'il n'y à rien à faire. Il faut que je modifie un fichier .cpp pour que la compilation ait lieu (ou que je rebuild tout). Je ne trouve pas ce comportement normal, normalement la modification d'un header entraine la recompilation de tous les objets dans lesquels il est inclus.

Voici les fichiers de mon projets :

Projet.pro :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 INCLUDEPATH = include
 OBJECTS_DIR = obj
 DESTDIR = bin
 HEADERS += include/renderer.h
 SOURCES += src/renderer.cpp \
     src/main.cpp
include/renderer.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 #ifndef RENDERER_H
 #define RENDERER_H
 #include <QWidget>
 #include <QPushButton>
 class Renderer : public QWidget
 {
 public:
     Renderer();
  protected:
     QPushButton *pb;
 };
 #endif // RENDERER_H
src/renderer.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 #include "renderer.h"
 Renderer::Renderer()
 {
         pb = new QPushButton("Mon bouton", this);
 }
src/main.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 #include <QApplication>
 #include "renderer.h"
 int main(int argc, char* argv[]){
      QApplication app(argc, argv);
      Renderer r;
     r.show();
      return app.exec();
 }
Est ce que j'ai mal configuré quelque chose ?

J'utilise Qt 4.5.2 et QMake 2.01a