如何使用最近的 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.0 和 Qt 5.8.0-1 和 MinGW 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 版本未明确支持您使用的编译器。您可以执行以下操作之一:
在你的项目中同时设置QMAKE_CXXFLAGS_CXX14
和QMAKE_CXXFLAGS_GNUCXX14
:
win32-g++ {
QMAKE_CXXFLAGS_CXX14 = -std=c++14
QMAKE_CXXFLAGS_GNUCXX14 = -std=c++14
}
在 Qt 安装文件夹中的 mkspecs/win32-g++/qmake.conf
中如上所述编辑这两个变量的默认值。
添加从 win32-g++
复制的新 mkspec
,针对您的编译器,并使用它构建您的 Qt。所有使用该 Qt 的项目都将正常运行 w.r.t。 C++14 支持。
I know
这是我的 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-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 版本未明确支持您使用的编译器。您可以执行以下操作之一:
在你的项目中同时设置
QMAKE_CXXFLAGS_CXX14
和QMAKE_CXXFLAGS_GNUCXX14
:win32-g++ { QMAKE_CXXFLAGS_CXX14 = -std=c++14 QMAKE_CXXFLAGS_GNUCXX14 = -std=c++14 }
在 Qt 安装文件夹中的
mkspecs/win32-g++/qmake.conf
中如上所述编辑这两个变量的默认值。添加从
win32-g++
复制的新mkspec
,针对您的编译器,并使用它构建您的 Qt。所有使用该 Qt 的项目都将正常运行 w.r.t。 C++14 支持。