C++ 如何将qmake设置为C++;14和最近的MinGW?

C++ 如何将qmake设置为C++;14和最近的MinGW?,c++,qt,qmake,C++,Qt,Qmake,这是我的Test.pro: CONFIG += c++14 SOURCES += main.cpp 还有我的main.cpp: int main(){} 根据许多副本,这应该给我C++14。但是,当我使用Qt Creator 4.2.0构建项目时,使用Qt 5.8.0-1和MinGW gcc 5.3.0-1通过我获得的维护工具安装 g++-c-pipe-fno保持内联dllexport-g-std=gnu++1y-frti-Wall-Wextra-fexceptions-mthreads-D

这是我的Test.pro:

CONFIG += c++14
SOURCES += main.cpp
还有我的main.cpp:

int main(){}
根据许多副本,这应该给我C++14。但是,当我使用Qt Creator 4.2.0构建项目时,使用Qt 5.8.0-1MinGW gcc 5.3.0-1通过我获得的维护工具安装

g++-c-pipe-fno保持内联dllexport-g-std=gnu++1y-frti-Wall-Wextra-fexceptions-mthreads-DUNICODE-DQT\u QML\u调试-DQT\u GUI\u LIB-DQT\u CORE\u LIB-DQT\u需要QMAIN-I..\Test-I-IC:\Qt\5.8\mingw53\u 32\include\Qt\GUI-IC:\IC:\IC:\5.8\mingw53\Qt\qtu\qtu\Qt\w53\f32-Idebug-IC:\Qt\5.8\mingw53\u 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保持内联dllexport-std=c++14-std=gnu++1y-frti-Wall-Wextra-fexceptions-mthreads-DUNICODE-DQT\u QML\u调试-DQT\u GUI\u LIB-DQT\u CORE\u LIB-DQT\u需要QMAIN-I.\Test-I.-IC:\Qt\5.8\mingw53\include-IC:\Qt\Qt\w53\GUI\qt5\Qt\w53\qtu\qtu-IC:\Qt\5.8\mingw53_32\include\QtCore-Idebug-IC:\Qt\5.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保持内联dllexport-std=c++14-std=gnu++11-frti-Wall-Wextra-fexceptions-mthreads-DUNICODE-DQT\u QML\u调试-DQT\u GUI\u LIB-DQT\u CORE\u LIB-DQT\u需求量-I..\Test-I-IC:\Qt\5.8\mingw53\u 32\include-IC:\Qt\5.8\wqtu\qtu-IC:\Qt\5.8\mingw53_32\include\QtCore-Idebug-IC:\Qt\5.8\mingw53_32\mkspecs\win32-g++-o debug\main.o..\Test\main.cpp

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


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

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

  • 在项目中设置
    QMAKE\u cxflags\u CXX14
    QMAKE\u cxflags\u GNUCXX14

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

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


  • 2.单独使qmake通过所需的标志。由于使用的标准不同,应用程序可能存在不适合Qt库的问题,但我不能产生这样的错误。@nwp当然可以2。只有一个人能做到。我将这些选项列为相互排斥的选项:“您可以执行以下操作之一”。我编辑它是为了强调这一点。“由于使用了不同的标准,应用程序可能存在不适合Qt库的问题”Qt意味着它是有效的C++11,这意味着它也是有效的C++14(很少有不适用于Qt的特殊情况)。如果您担心二进制兼容性——这是不必要的,那么这些开关不会产生二进制不兼容的输出。