2014-01-24 3 views
7

Ich versuche, Optimierungs-Flags zu gcc mit der Qmake .proDatei weitergeben müssen:Warum fügt qmake in diesem Fall Flags -O1 und -O2 hinzu?

hello.pro:

TEMPLATE = app 
CONFIG += console 
CONFIG -= app_bundle 
CONFIG -= qt 

SOURCES += main.cpp 

QMAKE_CXXFLAGS += -O3 \ 

main.cpp:

#include <iostream> 

int main() 
{ 
    std::cout << "Hi!" << std::endl; 
    return 0; 
} 

Kompilierungsausgabe:

15:14:34: Schritte zum Projekt TestGrounds Lauf ...
15.14.34: Beginn:
"/ usr/bin/make" clean rm -f main.o
rm - f * ~ core * .core
15:14:34: Der Prozess "/ usr/bin/make" wurde normal beendet.
15:14:34: Konfiguration unverändert, überspringen qmake Schritt.
15:14:34: Start: "/ usr/bin/make"
g ++ -c-Rohr -O3 -O2 -Wand -W -fPIE -I/opt/Qt5.2.0/5.2.0/gcc/mkspecs/linux-g ++ -I ../../ Projekte/TestGrund -I. -o main.o ../../Projects/TestGrounds/main.cpp
g ++ -Wl, -O1 -Wl, -rpath,/opt/Qt5.2.0/5.2.0/gcc -o TestGrunds main .o
15:14:35: Der Prozess "/ usr/bin/make" wurde normal beendet.
15:14:35: Verstrichene Zeit: 00:01.

Aber warum werden die -O1 und -O2 Optimierungsflags zu übergeben?

Ich habe versucht, das Projekt zu reinigen und es neu zu erstellen und das Ergebnis ist das gleiche.

Antwort

11

Versuchen Sie, diese

QMAKE_CXXFLAGS_RELEASE -= -O1 
QMAKE_CXXFLAGS_RELEASE -= -O2 
QMAKE_CXXFLAGS_RELEASE *= -O3 
+0

behoben das '* =' für dich :-) – rubenvb

+0

Danke! Dadurch wurde das ursprüngliche -O2-Flag entfernt, aber das zweite ist noch vorhanden. Ich würde auch gerne wissen, warum diese Fahnen dort sind. –

+0

bad fix :-(, wenn irgendwo -O3 angewendet wurde, erhalten wir Duplikate. * = - wird nur zur Liste hinzugefügt, wenn sie nicht bereits definiert ist. @rubenvb bitte meine Version zurückgeben). – DeadWarlock

1

es eine einfachere Option jetzt, fügen Sie diese in den Projekteinstellungen:

CONFIG += optimize_full 

oder in Ihrem .pro:

CONFIG(release, debug|release) { 
    CONFIG += optimize_full 
} 

Es ersetzt die -O2 mit -O3. (scheint seit 2014 dort zu sein)