C ++ Qt – Como adicionar “-std = c ++ 11” ao makefile que é gerado pelo qmake?

Estou desenvolvendo um programa no Qt. Seu makefile é gerado automaticamente a partir do arquivo .pro. Eu preciso usar algum código que precisa do sinalizador -std = c ++ 11 a ser configurado para g ++. Onde no .pro devo adicionar esse sinalizador? (mudar apenas o Makefile não funcionará, uma vez que ele é sobrescrito pelo recém-gerado, cada vez que eu construo o projeto).

Você pode adicionar o seguinte ao Qt. Pro para C ++ 11: –

 CONFIG += c++11 

A partir do Qt 5.4, o C ++ 14 pode ser ativado com

 CONFIG += c++14 

Você pode alterar as bandeiras CXX:

 QMAKE_CXXFLAGS += -std=c++11 

Eu costumo configurá-lo como:

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

Você pode achar tentador inserir a bandeira específica (que você mencionou)

 QMAKE_CXXFLAGS += -std=c++11 

no seu arquivo .pro, mas isso irá inserir apenas o sinalizador em seu nome.

Isso é insuficiente. O caminho certo é inserir em vez disso

 CONFIG += c++11 

no seu perfil. Duas ou três mudanças necessárias são feitas pelo qmake :

  1. -std=c++11 é inserido.
  2. -stdlib=libc++ é inserido.
  3. Se você estiver em um Mac, -mmacosx-version-min=10.6 se tornará -mmacosx-version-min=10.7 . (Talvez seja necessária alguma alteração semelhante em outros sistemas operacionais ou versões do SO).

(Um problema semelhante em 1 e 2 ).

Estou usando Snow Leopad 10.6.8 e gcc 4.9, eu tive que usar

 CONFIG += c++11 

ao invés de

 QMAKE_CXXFLAGS += -std=c++11 

Este último simplesmente não foi reconhecido.

 CONFIG += c++11 

no arquivo .pro parece funcionar para mim com o SDK do Qt4 depois de instalar o qt5-default no meu desktop Ubuntu:

 sudo apt install qt5-default 

De qualquer forma, o makefile gerado contém uma opção -std=c++0x eu suspeito ser suficiente para compilar meu código C ++ 11.