In Qt 4.8 habe ich Boost (1.52) verwendet. Alles war in Ordnung ... Jetzt versuche ich, zu QT5 zu wechseln und if.hpp: Macro argument mismatch
error in Zeile 131 BOOST_MPL_AUX_NA_SPEC(3, if_)
zu erhalten. In einigen QT-Foren gibt es eine Lösung wie diese:
in jeder Datei, die Boost verwendet ... Also Frage ist hier - wie zu sagen, um zu erhöhen, dass QT nicht bereit ist für BOOST_MPL_AUX_NA_SPEC
und dass boost soll eine primitivere Präprozessorsyntax verwenden, die QT5-kompatibel wäre?
Update: diese Lösung gefunden, scheint aber keinerlei Wirkung in Qt5 = (
Hier ist die beste Problemumgehung, die ich gefunden habe, nachdem ich das Netz für ein paar Stunden abgesucht habe. Es ist im Grunde, was andere Leute gesagt haben, aber mit ein paar Klarstellungen.
Dies kann am einfachsten erreicht werden, indem Sie Ihrer Projektdatei den folgenden Code hinzufügen (z. B. myproject.pro):
%Vor%Wenn ich zum Beispiel die Protokollierungsbibliothek verwenden möchte, hätte ich:
%Vor% Wenn ich die Header-Datei öffne, kann ich oben sehen, dass der Include-Guard den Namen BOOST_LOG_TRIVIAL_HPP_INCLUDED_
hat. Daher würde die entsprechende Zeile in der PRO-Datei lesen:
Ein paar weitere Hinweise, falls sie für jemanden relevant sind:
Ich habe mit dem gleichen Problem gekämpft und festgestellt, dass wenn ich die Definition von entfernt habe
_MSC_VER=1700
aus dem benutzerdefinierten Build-Befehl für Moc, dass die Warnung für mich wegging.
Ich konnte dies aus allen benutzerdefinierten Build-Moc-Schritten entfernen, indem ich die qmake.conf-Variable QMAKE_COMPILER_DEFINES
überschrieb. Ich verwende eine .pro-Datei, um eine .vcxproj-Datei zu generieren und mein Projekt mit Visual Studio 2012 zu kompilieren ( Hier ist, wie man eine .vcproj / .vcxproj Datei aus einer .pro Datei erzeugt).
In der Datei qmake.conf, die win32-msvc2012 zugeordnet ist, lautet diese Variable wie folgt:
%Vor%In meiner .pro-Datei habe ich es mit folgendem überschrieben:
%Vor%Dann habe ich die .vcxproj-Datei neu generiert und sie kompiliert, ohne dass es zu Makro-Argument-Mismatch-Warnungen gekommen ist.
Ich verwende VS 2012, boost 1.51 und qt 5.1.2 (kompiliert von [email protected]: qt / qt5.git).
Ich hoffe, das funktioniert auch für dich.
Tags und Links c++ qt boost qt5 c-preprocessor