Für spezifische Flags in dem moc in einem qmake Projekt (qt5.2) muß:
%Vor% Ich kompiliere eine Qt-Datei mit qmake && make
in der folgenden project.pro
-Datei:
Allerdings kompromittiert moc
bei einem Boost-Makro, das nicht parsen kann. Um diesen Fehler zu umgehen, muss ich das Flag -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED
an moc übergeben, aber ich kann es nicht verwalten zu tun.
Wie bearbeite ich meine .pro
Datei, um ein bestimmtes Flag an moc
zu übergeben? (aber nicht zu g++
, wie QMAKE_CXXFLAGS
)
Ein bisschen hackisch, aber was ist, wenn Sie den Moc-Compiler überschreiben, so dass er das Flag enthält. In der .pro:
%Vor%In meinem Code in Header-Dateien habe ich nur:
%Vor%Es funktioniert perfekt in Qt5 x64 und muss nichts neu kompilieren.
Siehe zum Beispiel die Qmake-Dokumente für Variablen mit Details
zehn verschiedene Variablen im Muster QMAKE_CFLAGS_*
und
zehn verschiedene Variablen im QMAKE_CXXFLAGS*
-Muster
und daher würde ich mit QMAKE_CXXFLAGS
beginnen, was wie folgt dokumentiert ist:
QMAKE_CXXFLAGS
Diese Variable enthält die C ++ - Compiler-Flags Wird beim Erstellen eines Projekts verwendet. Der Wert dieser Variablen ist typischerweise Wird von qmake oder qmake.conf gehandhabt und muss nur selten geändert werden. Das Flags, die für Debug- und Release-Modi spezifisch sind, können durch Ändern angepasst werden die Variablen
%Vor%QMAKE_CXXFLAGS_DEBUG
undQMAKE_CXXFLAGS_RELEASE
, beziehungsweise. Hinweis: Auf der Symbian-Plattform kann diese Variable verwendet werden um architekturspezifische Optionen für jeden Compiler im Symbian zu übergeben Build-System. Zum Beispiel:Weitere Informationen finden Sie unter qmake Platform Notes.
Ich würde also mit
anfangen QMAKE_CXXFLAGS += -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED
, die Sie einfach zu Ihrer .pro
-Datei hinzufügen können.
Wenn Sie Ogre3D (OGRE 1.8.1 SDK für Visual C ++ .Net 2010 (32-bit)) verwenden, dann verwenden Sie QT5 32bit anstelle der QT5 64bit Version, es wird übergeben.
Bedenken Sie auch Folgendes:
%Vor%Ich denke, es wurde mit 32bit kompiliert (boost include), also nehme ich an, dass ich src nehmen und neu kompilieren muss (mit meinem 64bit), aber das ist eine andere Geschichte, wo ich jetzt seit OGRE 1.9 RC 1 SDK für Visual C ++ nicht mehr weitergehe. Net 2012 (64-Bit) wird in Kürze auf der stabilen Version veröffentlicht.
Grüße
EDIT 1:
Laden Sie Qt-Bibliotheken 4.8.4 für Windows herunter und konfigurieren Sie meinen QT-Ersteller (der mit vollem QT5 kommt und rate mal .... Ogre3D funktioniert wie ein Zauberspruch beim Kompilieren unter 4.8.4.
%Vor%Ich erwähnte auch, wer hier interessiert ist: Ссылка
Der beste Weg, dies zu finden, basiert auf einem Kommentar zu der akzeptierten Lösung von David Faure:
%Vor% Die anderen vorgeschlagenen Methoden, die load(moc)
beinhalten und die QMAKE_MOC
Variable selbst manipulieren, haben einen unglücklichen Nebeneffekt: sie verhindern, dass qmake automatisch INCLUDEPATH
Variablen (und vielleicht andere) hinzufügt, die normalerweise auf der Kommandozeile von moc wären. Wenn INCLUDEPATH
eingerichtet ist nach der Aufruf von load(moc)
.
Dieser Ansatz ist einfacher, wenn Sie Ihre qmake-Konfiguration in mehrere Dateien aufteilen. Sie müssen nicht sicherstellen, dass die Änderung an der Befehlszeile von moc erfolgt, nachdem alle INCLUDEPATH
-Verzeichnisse festgelegt wurden.