8
votes

Qt5 Migration et boost: if.hpp: Bug Macro Argument Mismatch

dans qt 4.8 J'ai utilisé Boost (1.52) Tout allait bien ... Maintenant, j'essaie de passer à Qt5 et d'obtenir if.hpp: Macro argument Mismatch code> Erreur sur la ligne 131 BOOST_MPL_AUX_NA_SPEC (3, si _) code>. Dans certains Forums QT Il est présenté une solution comme celle-ci:

#ifndef Q_MOC_RUN
// All boost includes
#endif // Q_MOC_RUN


0 commentaires

3 Réponses :


2
votes

Je viens de rencontrer le même problème et j'ai trouvé des informations utiles sur le forum QT.

Voici le thread QT BugReport et QT-Forum avec une description d'aide et des solutions de contournement du problème:

https://bugreports.qt-project.org/browse/qtbug-29331 < / a>

http://qt-project.org/forums/viewththread/22993/


1 commentaires

Ajout spécifiquement la directive #ifndef q_moc_run a fonctionné pour moi.



6
votes

Voici la meilleure solution de contournement que j'ai pu trouver après avoir récrécié le filet pendant quelques heures. C'est fondamentalement ce que les autres ont dit, mais avec quelques clarifications.

  • Le problème a à voir avec Moc.exe ne manipule pas correctement les macros de boost. li>
  • Afin de contourner cela, nous désactivons l'inclusion d'en-têtes de boost en définissant leurs gardes inclus pour le processus MOC.EXE, mais pas pour la compilation de source régulière. Li>
  • Ceci peut être accompli le plus facilement en ajoutant le code suivant à votre fichier de projet (par exemple MyProject.Pro): P>

    QMAKE_MOC += -DBOOST_LOG_TRIVIAL_HPP_INCLUDED_
    


2 commentaires

Vous ne pouvez pas simplement ajouter -dboost_mpl_if_hpp_inclus pour exclure uniquement le fichier incriminé?


Ceci est la meilleure solution des deux présentés ici à mes fins. Acclamations à op.



3
votes

J'ai eu du mal avec le même problème et j'ai constaté que lorsque j'ai enlevé la définition de _msc_ver = 1700 de la commande de construction personnalisée pour MOC que l'avertissement s'est éloigné pour moi.

J'ai pu supprimer ceci de toutes les étapes Moc de construction personnalisées en remplacement de la variable QMake.conf Qmake_compiler_defines . J'utilise un fichier .pro pour générer un fichier .vcxproj et compiler mon projet à l'aide de Visual Studio 2012 ( ici est comment générer un fichier .vcproj / .vcxproj à partir d'un fichier .pro).

dans le fichier qmake.conf associé à win32-msvc2012 Cette variable est la suivante: xxx

dans mon fichier .pro je l'ai envode avec ceci: xxx

puis j'ai régénéré le fichier .vcxproj et compilé sans avertissements d'arguments macro-arguments.

J'utilise vs 2012, boost 1.51 et qt 5.1.2 (compilé de git@gitorieux.org: qt / qt5.git).

J'espère que cela fonctionne pour vous aussi.


0 commentaires