Forum Programmation.c++ [C++/QT] Include unitaire/global

Posté par  (site web personnel) .
Étiquettes : aucune
0
5
fév.
2009
Bonjours à tous,

J'ai une question à vous poser. Je travail sur un projet de taille moyenne écrit en QT (contenant trois librairies, quelques modules d'extensions, deux exécutables).

Sous Qt, il y a deux manières de faire des includes (j'ai remplacé les plus petit et plus grand que par des guillemets):

inclure le module :
#include "QtGui"
#include "QtXml"

ou inclure chaque élément :
#include "QPushButton"
#include "QDialog"
#include "QFile"
#include "QDomDocument"

Quel est la meilleur méthode pour le temps de compilation ? pour la taille de l'exécutable ?

Sous Windows, j'ai réussi à activer les precompiled_header, mais sous linux, il ne s'active pas automatiquement, et si je les actives manuellement, alors la compilation ne marche pas (il dit ne pas trouver un certain fichier, l'entête précompilé).

Dans l'entête précompilé, sous Windows, j'ai mis les modules, sous Linux (sans entête précompilé), j'utilise les include unitaire. En plus d'accélérer le temps de traitement de compilation, les entêtes précompilés, réduisent également la taille de l'exécutable. Est-ce du uniquement au fait que ce sont des entêtes précompilés, ou parce que j'ai inclus les entêtes modules en entier ?

(Si quelqu'un connais la méthode pour activer les entêtes précompilés sous Linux avec Qt4.4.3 et GCC4, je veux bien la prendre)
  • # En-tête précompilée

    Posté par  . Évalué à 2.

    Pour faire fonctionner l'en-tête précompilée :

    1) Ajoute les lignes suivants au fichier projet (.pro)
    CONFIG += precompile_header
    PRECOMPILED_HEADER = stable.h


    2) Remplir le fichier stable.h avec les en-têtes stables (qui ne sont pas modifiables, par exemple les en-têtes Qt, mais pas les en-têtes du projet)

    3) Inclure le fichier stable.h au début de chaque fichier .cpp du projet

    Cela devrait marcher.
    • [^] # Re: En-tête précompilée

      Posté par  (site web personnel) . Évalué à 2.

      Le problème c'est que ca marche sous Windows mais sous Linux j'ai ceci :

      make[1]: entrant dans le répertoire « /home/phoenix/xinx/components »
      g++ -m64 -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../../qt/mkspecs/default -I. -I../../qt/include/QtCore -I../../qt/include/QtCore -I../../qt/include/QtGui -I../../qt/include/QtGui -I../../qt/include -I../ext/qcodeedit/lib -I../ext/qcodeedit/lib/document -I../ext/qcodeedit/lib/language -I../ext/qcodeedit/lib/qnfa -I../ext/qcodeedit/lib/widgets -I. -I. -x c++-header -c stable_header.h -o ./xinxcmp.gch/c++
      g++ -c -include /xinxcmp -m64 -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../../qt/mkspecs/default -I. -I../../qt/include/QtCore -I../../qt/include/QtCore -I../../qt/include/QtGui -I../../qt/include/QtGui -I../../qt/include -I../ext/qcodeedit/lib -I../ext/qcodeedit/lib/document -I../ext/qcodeedit/lib/language -I../ext/qcodeedit/lib/qnfa -I../ext/qcodeedit/lib/widgets -I. -I. -o ./directoryedit.o directoryedit.cpp
      cc1plus: error: /xinxcmp: Aucun fichier ou répertoire de ce type
      make[1]: *** [directoryedit.o] Erreur 1
      make[1]: quittant le répertoire « /home/phoenix/xinx/components »
      make: *** [sub-components-make_default] Erreur 2
      • [^] # Re: En-tête précompilée

        Posté par  . Évalué à 1.

        Je ne sais pas pourquoi, mais, après comparaison avec plusieurs projets, il semble que tu aies un "/" ou "./" de trop (en gras ci-dessous)
        g++ -m64 -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../../qt/mkspecs/default -I. -I../../qt/include/QtCore -I../../qt/include/QtCore -I../../qt/include/QtGui -I../../qt/include/QtGui -I../../qt/include -I../ext/qcodeedit/lib -I../ext/qcodeedit/lib/document -I../ext/qcodeedit/lib/language -I../ext/qcodeedit/lib/qnfa -I../ext/qcodeedit/lib/widgets -I. -I. -x c++-header -c stable_header.h -o ./xinxcmp.gch/c++
        g++ -c -include /xinxcmp -m64 -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../../qt/mkspecs/default -I. -I../../qt/include/QtCore -I../../qt/include/QtCore -I../../qt/include/QtGui -I../../qt/include/QtGui -I../../qt/include -I../ext/qcodeedit/lib -I../ext/qcodeedit/lib/document -I../ext/qcodeedit/lib/language -I../ext/qcodeedit/lib/qnfa -I../ext/qcodeedit/lib/widgets -I. -I. -o ./directoryedit.o directoryedit.cpp

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.