c++ - 在构建 qmake 项目时如何使用 C++14 功能?

标签 c++ qt c++14 qmake

我目前在我的 Qt 应用程序中使用 C++11 功能。不过,我想在我的应用程序中使用一些新的 C++14 功能。

要在Qt应用程序中启用C++11,只需要在qmake工程文件中添加一行,即:

CONFIG += c++11

或者这个对于早期版本:

QMAKE_CXXFLAGS += -std=c++1y

我已经尝试过对 C++14 做同样的事情,但没有成功。我像这样更改了 qmake 项目的上述行:

CONFIG += c++14

或者这个对于早期版本:

QMAKE_CXXFLAGS += -std=c++1y

之后,在尝试构建项目时会出现许多以前不存在的编译错误。该项目编译良好,但是,如果我尝试使用任何 C++14 功能,则会出现编译错误。这是一个例子:

template<typename T>
constexpr T pi = T(3.1415926535897932385);

这是对应的错误:

main.cpp:7: error: template declaration of 'constexpr const T pi'
constexpr T pi = T(3.1415926535897932385);  
          ^

在 QtCreator 中使用 qmake 项目时如何启用 C++14 功能?

我正在使用 Qt 5.3.2、Qt Creator 3.2.1 和 MinGW 4.8.2 32 位。

最佳答案

This is now supported properly from Qt 5.4 .您只需将其输入到您的 qmake 项目文件中:

CONFIG += c++14

Thiago 在 2014 年年中进行了必要的代码更改:

Add support for CONFIG += c++14

我刚刚创建了必要的文档更改:

Mention the c++14 CONFIG option in the qmake variable reference

请注意,变量模板仅受 gcc 5.0 支持,但您的代码工作正常。这可用于使用旧版 gcc 测试 C++14:

main.cpp

#include <iostream>

int main()
{
    // Binary literals: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf
    // Single-quotation-mark as a digit separator: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf
    std::cout << 0b0001'0000'0001;
    return 0;
}

main.pro

TEMPLATE = app
TARGET = main
CONFIG -= qt
CONFIG += c++14
SOURCES += main.cpp

构建并运行

qmake && make && ./main

输出

257

关于c++ - 在构建 qmake 项目时如何使用 C++14 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127217/

相关文章:

c++ - 图的切集,Boost Graph Library

c++ - 简单的内存问题练习

c++ - 在Qt中的图像上拖动一个矩形

c++ - QT 5.3 发布应用

c++ - thread_guard 与 scoped_thread

c++ - GetShortPathName 函数有哪些替代方法?

c++ - 如何迭代结构中的 vector ?

c++ - 使用多个 slider 在自定义 QWidget 中映射 QSlider::valueChanged 信号

c++ - 在常量表达式中更改 union 的事件成员

c++ - .obj 中已经定义的变量;这里发生了什么?