Wie füge ich bestimmte Flags in einem qmake-Projekt zu moc hinzu?

8

Ich kompiliere eine Qt-Datei mit qmake && make in der folgenden project.pro -Datei:

%Vor%

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 )

    
F'x 13.12.2011, 09:38
quelle

7 Antworten

10

Ein bisschen hackisch, aber was ist, wenn Sie den Moc-Compiler überschreiben, so dass er das Flag enthält. In der .pro:

%Vor%     
Tatu Lahtela 23.12.2011, 16:11
quelle
3

In meinem Code in Header-Dateien habe ich nur:

%Vor%

Es funktioniert perfekt in Qt5 x64 und muss nichts neu kompilieren.

    
Programista 28.08.2013 10:22
quelle
1

Es gibt ein Update zu diesem Problem für Boost 1.53, siehe den letzten Post hier :

Wir müssen auch -DBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION hinzufügen.

    
andre 15.03.2013 15:04
quelle
1

Für spezifische Flags in dem moc in einem qmake Projekt (qt5.2) muß:

%Vor%     
Trilla 07.02.2014 02:38
quelle
0

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 QMAKE_CXXFLAGS_DEBUG und QMAKE_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:

%Vor%      

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.

    
Dirk Eddelbuettel 18.12.2011 22:22
quelle
0

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: Ссылка

    
UT2007 09.06.2013 19:27
quelle
0

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.

    
Jason R 19.10.2017 15:33
quelle

Tags und Links