C ++ Qt – Wie fügt man “-std = c ++ 11” zum Makefile hinzu, das von qmake erzeugt wird?

Ich entwickle ein Programm in Qt. Sein Makefile wird automatisch aus der .pro-Datei generiert. Ich brauche etwas Code, der das -std = c ++ 11 Flag benötigt, um für g ++ eingerichtet zu werden. Wo in .pro sollte ich diese Flagge hinzufügen? (Nur das Makefile zu ändern wird nicht funktionieren, da es jedes Mal, wenn ich das Projekt erstelle, von dem neu erzeugten überschrieben wird).

   

Sie können dem Qt .pro für C ++ 11 Folgendes hinzufügen:

 CONFIG += c++11 

Ab Qt 5.4 kann C ++ 14 mit aktiviert werden

 CONFIG += c++14 

Sie können CXX-Flags ändern:

 QMAKE_CXXFLAGS += -std=c++11 

Ich setze es normalerweise als:

 QMAKE_CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic 

Sie können es verlockend finden, die spezifische Flagge (die Sie erwähnen) einzufügen

 QMAKE_CXXFLAGS += -std=c++11 

in Ihrer .pro-Datei, aber das wird nur die Flagge in Ihrem Namen einfügen.

Das ist nicht ausreichend. Der richtige Weg ist stattdessen einzufügen

 CONFIG += c++11 

in Ihrer .pro-Datei. Zwei oder drei notwendige Änderungen werden dann von qmake :

  1. -std=c++11 wird eingefügt.
  2. -stdlib=libc++ wird eingefügt.
  3. Wenn du auf einem Mac bist, wird -mmacosx-version-min=10.6 -mmacosx-version-min=10.7 . (Möglicherweise ist eine ähnliche Änderung bei anderen Betriebssystemen oder Betriebssystemversionen erforderlich.)

(Ein ähnliches Problem bei 1 und 2. )

Ich benutze Snow Leopard 10.6.8 und gcc 4.9, die ich benutzen musste

 CONFIG += c++11 

Anstatt von

 QMAKE_CXXFLAGS += -std=c++11 

Letzteres wurde einfach nicht erkannt.

 CONFIG += c++11 

in .pro-Datei scheint für mich mit dem Qt4 SDK nach der Installation von qt5-default auf meinem Ubuntu-Desktop zu funktionieren:

 sudo apt install qt5-default 

Jedenfalls enthält das generierte Makefile die Option -std=c++0x ich vermute, dass sie ausreicht, um meinen C ++ 11-Code zu kompilieren.