6
votes

QT4 in Visual Studio 2008 - Les fichiers MOC-DE sont exclus de la construction?

Récemment, j'ai installé VS Addin à partir du logiciel QT et j'ai importé mon projet .Pro à VS2008. Généralement, tout fonctionne bien, avec une exception petite mais gênante.

Supposons que j'ai un fichier.cpp avec une classe qui déclare qu'il s'agit d'un Q_Object. Ainsi, en tant que tel, le fichier est MOC-ED et MOC_FILE.CPP est généré et est disponible en solution sous "Fichiers générés". Jusqu'à présent, si bon.

La chose drôle est, quand je change quelque chose dans fichier.cpp (ajoutez une ligne, par exemple), puis enregistrez le fichier à l'aide de CTRL + S, le MOC_FILE.CPP est exclu de la construction (vous pouvez voir un panneau d'entrée sans entrée. sur l'icône). Et je frappe beaucoup d'erreurs de liaison typiques lorsque j'appuie sur F7 pour construire une solution. Afin de fixer la situation, je dois aller aux propriétés de moc_file.cpp et de changer "exclure de la construction" de "oui" à "non". Alors tout fonctionne bien.

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


1 commentaires

Avez-vous les derniers vs addin? Vos projets sont-ils considérés comme des "projets QT" par VS?


6 Réponses :


0
votes

Oui, j'utilise les derniers vs addin et mon projet est correctement considéré comme un projet QT.


0 commentaires

0
votes

Avez-vous défini votre configuration correctement?

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

  • "Build Command Line" QMake -Project & QMake & Nmake Débog
  • "Nettoyer les commandes" Nmake Debug-Clean-Clean
  • "Ligne de commande de reconstruction" QMake & Nmake Débog

    répéter la même chose avec la configuration de libération


0 commentaires

0
votes

J'ai vu l'exclus du comportement de construction dans VS2008 (VS 2003 aussi), mais le projet s'appuie 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étecter ce fichier a été modifié
  • Définissez l'ancien fichier MOC comme exclu de la construction
  • Ajoutez un nouveau fichier au projet avec le même nom et l'inclure dans la construction

    Regardant mon projet VS 2003, je peux voir que certains fichiers MOC_ * sont inclus deux fois dans le projet, une version est définie comme exclu de la construction et l'autre n'est pas.


0 commentaires

0
votes

recréer le fichier .vsproj code> à l'aide de QMake pourrait résoudre le problème.

Pour chaque fichier QObject que vous avez, le plugin QT crée un fichier MOC_ pour chaque configuration de construction (généralement simplement débogage et libération). Lorsque vous modifiez la configuration actuelle, vous pouvez voir les panneaux de saisie sans entrée d'un fichier à l'autre.
Les fichiers MOC_ ne doivent pas changer lorsque vous modifiez le fichier .cpp. Seulement lorsque vous modifiez les fichiers .h. Tout cela me conduit à ce que quelque chose de mal est arrivé à 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: P>

qmake -spec win32-msvc2008


0 commentaires

1
votes

En réalité, j'ai trouvé la solution pour cette "fonctionnalité". Vous devez ajouter les deux fichiers à partir de généraliséesFiles \ Debug and Generatedfiles \ Debug (ou d'autres répertoires de configurations). QT exclurea de construire tout ce qui n'appartient pas au type de construction actuellement sélectionné.


0 commentaires

7
votes

problème résolu. J'ai découvert que dans mon fichier créé à la main décrivant mon projet, j'ai eu Moc_Dir spécifié comme:

moc_dir = .moc

Après avoir importé dans le répertoire Visual Studio pour "Fichiers générés" était identique pour la libération et le débogage. Ainsi, lorsque ma configuration active a été déboguée par exemple, lorsque j'ai enregistré un fichier, il est devenu exclu de la construction, car il était judicieux pour le fichier lié à la libération - tout comme RPG et Andrew suggéré. Après avoir modifié le répertoire sur .moc \ $ (ConfigurationName), le problème n'est plus vu (et je vois 2 versions de chaque fichier généré dans ma solution - une pour chaque configuration).

Merci pour votre aide tout le monde!


2 commentaires

J'ai rencontré le même problème lors de l'importation d'un .Pro dans VS 2008 et, en effet, certains des dossiers «générés» manquaient la partie $ (ConfigurationName). P.S: Vous devez accepter votre propre réponse afin que cette question ne s'affiche pas dans la section sans réponses. ;-)


Upped the Vote compte depuis que j'ai rencontré le même problème et cela semblait le clouer sur la tête.