Qt4 dans Visual Studio 2008 - Les fichiers moc-ed sont-ils exclus de la construction?

StackOverflow https://stackoverflow.com/questions/1200268

  •  05-07-2019
  •  | 
  •  

Question

Récemment, j'ai installé VS Addin de Qt Software et j'ai importé mon projet .pro dans VS2008. En règle générale, tout fonctionne bien, avec une exception petite mais agaçante.

Supposons que j'ai un fichier.cpp avec une classe qui déclare qu'il s'agit d'un Q_OBJECT. Donc, en tant que tel, le fichier est MOC-ed et le fichier moc_file.cpp est généré et est disponible dans la solution sous "Fichiers générés". Jusqu'ici tout va bien.

Ce qui est amusant, c’est que, lorsque je modifie quelque chose dans file.cpp (ajouter une ligne, par exemple) et que je sauvegarde le fichier avec Ctrl + S, le fichier moc_file.cpp est exclu de la construction (vous pouvez voir un signe «no entry»). sur l'icône). Et je rencontre beaucoup d'erreurs typiques de l'éditeur de liens lorsque j'appuie sur F7 pour créer une solution. Afin de remédier à la situation, je dois accéder aux propriétés de moc_file.cpp et modifier "Exclude from build". à partir de " Oui " à "Non". Ensuite, tout fonctionne bien.

Est-ce que quelqu'un d'autre ressent la même chose? Est-ce que je fais quelque chose de mal?

Était-ce utile?

La solution

Problème résolu. J'ai découvert que dans mon fichier .pro fabriqué à la main et décrivant mon projet, MOC_DIR était spécifié comme suit:

  

MOC_DIR = .moc

Après avoir importé le répertoire Visual Studio pour " Fichiers générés " était la même pour Release et Debug. Ainsi, lorsque ma configuration active était Debug, par exemple, lorsque j’enregistrais un fichier, il était exclu de la construction car il était judicieux de traiter un fichier lié à la version, comme l’a suggéré rpg et Andrew. Après avoir changé le répertoire en .moc \ $ (ConfigurationName), le problème n’est plus résolu (et deux versions de chaque fichier généré apparaissent dans ma solution - une pour chaque configuration).

Merci pour votre aide à tous!

Autres conseils

En fait, j'ai trouvé la solution pour cette "fonctionnalité". Vous devez ajouter les deux fichiers à partir de GeneratedFiles \ Debug et GeneratedFiles \ Debug (ou à partir d'autres répertoires de configuration). Qt exclura de la construction tout ce qui n’appartient pas au type de construction actuellement sélectionné.

Oui, j'utilise la dernière version de VS Addin et mon projet est correctement considéré comme un projet Qt.

avez-vous défini votre configuration correctement?

Ouvrez la fenêtre " Paramètres de configuration de débogage " Définissez les éléments suivants comme indiqué ci-dessous:

  • " Construire la ligne de commande " qmake -project & amp; qmake & amp; déboguer nmake
  • " Nettoyer les commandes " nmake debug-clean
  • " Reconstruire la ligne de commande " qmake & amp; déboguer nmake

Répétez la même chose avec la configuration de version

J'ai vu le comportement exclu de la construction dans VS2008 (VS 2003 également), mais le projet est construit correctement. Lorsque vous modifiez un fichier moc'able, Qt devra recréer le fichier moc'ed car il est obsolète.

Je soupçonne que l'algorithme de Qt est quelque chose comme:

  • détecte que le fichier a été modifié
  • définir l'ancien fichier moc comme exclu de la construction
  • ajoutez un nouveau fichier au projet portant le même nom et incluez-le dans la construction

En regardant mon projet VS 2003, je constate que certains fichiers moc_ * sont inclus deux fois dans le projet, une version est définie comme exclue de la construction et l'autre non.

La recréation du fichier .vsproj à l'aide de qmake peut résoudre le problème.

Pour chaque fichier QObject que vous possédez, le plug-in QT crée un fichier moc_ pour chaque configuration de construction (généralement uniquement Debug et Release). Lorsque vous modifiez la configuration actuelle, vous pouvez voir que les signes Pas d'entrée passent d'un fichier à l'autre.
Les fichiers moc_ ne doivent pas changer lorsque vous modifiez le fichier .cpp. Tout ce qui me conduit à penser que quelque chose de mal s'est passé avec votre configuration et que la meilleure façon de le réparer est de le recréer avec qmake en utilisant quelque chose comme ceci:

qmake -spec win32-msvc2008
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top