C++ Qt - comment ajouter "- std=C++11 " au makefile généré par qmake?

je développe un programme en Qt. Son makefile est généré automatiquement à partir du .pro file. J'ai besoin d'utiliser un code qui a besoin du drapeau-std=C++11 pour être configuré pour g++. Où ça ?pro dois-je ajouter ce drapeau? (changer seulement le Makefile ne fonctionnera pas car il est écrasé par le nouveau produit, chaque fois que je construis le projet).

51
demandé sur Ilya 2013-10-16 12:22:37

5 réponses

vous pouvez ajouter ce qui suit au Qt .pro pour C++11: -

CONFIG += c++11

depuis Qt 5.4, C++14 peut être activé avec

CONFIG += c++14
72
répondu TheDarkKnight 2017-03-01 16:47:02

vous pouvez changer les drapeaux CXX:

QMAKE_CXXFLAGS += -std=c++11

Je l'ai habituellement réglé comme:

QMAKE_CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic
22
répondu BЈовић 2014-04-11 13:18:59

vous pourriez trouver tentant d'insérer le drapeau spécifique (que vous mentionnez)

QMAKE_CXXFLAGS += -std=c++11

dans votre .pro file, mais cela n'insérera que ce drapeau en votre nom.

c'est insuffisant. La bonne façon est d'insérer à la place

CONFIG += c++11

dans votre .pro file. Deux ou trois modifications nécessaires sont alors apportées par qmake :

  1. -std=c++11 est inséré.
  2. -stdlib=libc++ est inséré.
  3. si vous êtes sur un Mac, -mmacosx-version-min=10.6 devient -mmacosx-version-min=10.7 . (Peut-être qu'un changement similaire est nécessaire sur d'autres versions OS ou OS.)

(une question similaire à 1 et 2 .)

11
répondu Calaf 2017-05-23 12:25:58

j'utilise Snow Leopad 10.6.8 et gcc 4.9, j'ai dû utiliser

CONFIG += c++11

au lieu de

QMAKE_CXXFLAGS += -std=c++11

ce dernier n'était tout simplement pas reconnu.

2
répondu Wall-E 2015-07-13 19:33:16
CONFIG += c++11 

in .le fichier pro semble fonctionner pour moi avec le SDK Qt4 après avoir installé qt5-default sur mon bureau Ubuntu:

sudo apt install qt5-default

quoi qu'il en soit le makefile généré contient une option -std=c++0x que je soupçonne d'être suffisante pour compiler mon code C++11.

0
répondu Pascal Séguy 2016-09-09 06:21:40