【问题标题】:How to set qmake to C++14 with recent MinGW?如何使用最近的 MinGW 将 qmake 设置为 C++14?
【发布时间】:2017-07-31 20:29:30
【问题描述】:

Iknowtherearemanyduplicates.

这是我的 Test.pro:

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

还有我的 main.cpp:

int main(){}

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

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\5.8\mingw53_32\include -IC:\Qt\5.8\mingw53_32\include\QtGui -IC:\Qt\5.8\mingw53_32\include\QtANGLE -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

这不是我期望的-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\5.8\mingw53_32\include -IC:\Qt\5.8\mingw53_32\include\QtGui -IC:\Qt\5.8\mingw53_32\include\QtANGLE -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-mode 或只是

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\5.8\mingw53_32\include -IC:\Qt\5.8\mingw53_32\include\QtGui -IC:\Qt\5.8\mingw53_32\include\QtANGLE -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

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

如何让 qmake 使用 C++14?

【问题讨论】:

    标签: c++ qt qmake


    【解决方案1】:

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

    1. 在您的项目中设置 both 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 支持。

    【讨论】:

    • 2.单独使 qmake 通过所需的标志。由于使用的标准不同,应用程序可能不适合 Qt 库,但我无法产生这样的错误。
    • @nwp 当然 2. 一个人就可以做到。我将这些选项列为互斥:“您可以执行以下操作之一”。我对其进行了编辑以强调这一点。 “由于使用了不同的标准,应用程序可能存在不适合 Qt 库的问题”Qt 是有效的 C++11,这意味着它也是有效的 C++14(很少有奇怪的极端情况不适用于 Qt)。如果您担心二进制兼容性 - 这是不必要的,这些开关不会产生二进制不兼容的输出。
    猜你喜欢
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多