【问题标题】:switching from Qt 5.6 to Qt 5.7 - "no member 'make_unique' in namespace std"从 Qt 5.6 切换到 Qt 5.7 - “命名空间 std 中没有成员 'make_unique'”
【发布时间】:2016-07-18 18:30:43
【问题描述】:

我有一个 CMake Qt 项目,它使用了几个 c++14 功能,包括 std::make_unique。通常,这将通过以下方式处理:

LIST(APPEND CMAKE_CXX_FLAGS -std=c++14)

ADD_COMPILE_OPTIONS(-std=c++14)

我想将项目从版本 5.6 升级到 5.7,但在测试构建期间出现多次失败并出现错误

命名空间std中没有成员'make_unique'

我已验证所有适当的头文件和编译选项都已到位,并排除了任何环境问题。这绝对是使用 Qt 5.7 的问题。有什么解决办法吗?

【问题讨论】:

    标签: c++ qt cmake c++14


    【解决方案1】:

    原来这是known problem with CMake/Qt 5.7。显然,从 CMake 3.1 开始,定义在 CMake 中使用哪个 C++ 标准的正确方法是使用

    SET(CMAKE_CXX_STANDARD 14)
    

    从 Qt 5.7 开始,对CMAKE_CXX_STANDARD 使用任何方法 except 都会导致问题中提到的 c++14 错误。使用此方法清除了我构建的所有错误。

    有趣的是,阅读该错误报告非常有趣,因为最初此问题被认为是发布阻止程序,然后降级为已知问题,最终(似乎)甚至从 known issue list 中清除。

    【讨论】:

    • 错误报告读起来很有趣 同意,这个问题说已解决。关闭为已修复但不解决问题只是记录它存在是很奇怪的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2015-03-14
    相关资源
    最近更新 更多