如何使用最近的 MinGW 将 qmake 设置为 C++14?

How to set qmake to C++14 with recent MinGW?

I know are many duplicates.

这是我的 Test.pro:

CONFIG += c++14
SOURCES += main.cpp

和我的 main.cpp:

int main(){}

根据许多重复,这应该给我 C++14。但是,当我使用 Qt Creator 4.2.0Qt 5.8.0-1MinGW gcc 5.3 构建项目时。 0-1 通过维护工具安装 我得到

g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++1y -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\Test -I. -IC:\Qt.8\mingw53_32\include -IC:\Qt.8\mingw53_32\include\QtGui -IC:\Qt.8\mingw53_32\include\QtANGLE -IC:\Qt.8\mingw53_32\include\QtCore -Idebug -IC:\Qt.8\mingw53_32\mkspecs\win32-g++ -o debug\main.o ..\Test\main.cpp

这不是我期望的 -std=c++14

我尝试了其他问题的各种技巧,例如

QMAKE_CXXFLAGS_CXX14 = -std=c++14
CONFIG += c++14
QMAKE_CXXFLAGS += -std=c++14

SOURCES += main.cpp

这导致

g++ -c -pipe -fno-keep-inline-dllexport -std=c++14 -g -std=gnu++1y -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\Test -I. -IC:\Qt.8\mingw53_32\include -IC:\Qt.8\mingw53_32\include\QtGui -IC:\Qt.8\mingw53_32\include\QtANGLE -IC:\Qt.8\mingw53_32\include\QtCore -Idebug -IC:\Qt.8\mingw53_32\mkspecs\win32-g++ -o debug\main.o ..\Test\main.cpp

第二个选项覆盖第一个选项,这意味着它仍处于 gnu++1y 模式或只是

QMAKE_CXXFLAGS += -std=c++14
SOURCES += main.cpp

这也会导致

g++ -c -pipe -fno-keep-inline-dllexport -std=c++14 -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\Test -I. -IC:\Qt.8\mingw53_32\include -IC:\Qt.8\mingw53_32\include\QtGui -IC:\Qt.8\mingw53_32\include\QtANGLE -IC:\Qt.8\mingw53_32\include\QtCore -Idebug -IC:\Qt.8\mingw53_32\mkspecs\win32-g++ -o debug\main.o ..\Test\main.cpp

我删除了构建目录和 Test.pro.user 文件以强制从头开始构建,没有给我 C++14。

如何告诉 qmake 使用 C++14?

您使用的 Qt 版本未明确支持您使用的编译器。您可以执行以下操作之一

  1. 在你的项目中同时设置QMAKE_CXXFLAGS_CXX14QMAKE_CXXFLAGS_GNUCXX14:

    win32-g++ {
       QMAKE_CXXFLAGS_CXX14 = -std=c++14
       QMAKE_CXXFLAGS_GNUCXX14 = -std=c++14
    }
    
  2. 在 Qt 安装文件夹中的 mkspecs/win32-g++/qmake.conf 中如上所述编辑这两个变量的默认值。

  3. 添加从 win32-g++ 复制的新 mkspec,针对您的编译器,并使用它构建您的 Qt。所有使用该 Qt 的项目都将正常运行 w.r.t。 C++14 支持。