从Qt 5.6切换到Qt 5.7 - "命名空间std中没有成员'make_unique'"

Nic*_*aus 5 c++ qt cmake c++14

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

LIST(APPEND CMAKE_CXX_FLAGS -std=c++14)
Run Code Online (Sandbox Code Playgroud)

要么

ADD_COMPILE_OPTIONS(-std=c++14)
Run Code Online (Sandbox Code Playgroud)

我想将项目从5.6版升级到5.7版,但在测试版本中,出现了多次错误

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

我已经验证了所有适当的头文件和编译选项,并排除了任何环境问题.这绝对是使用Qt 5.7的一个问题.有没有解决方法?

Nic*_*aus 9

事实证明这是CMake/Qt 5.7的一个已知问题.显然,从CMake 3.1开始,定义在CMake中使用哪种C++标准的正确方法就是

SET(CMAKE_CXX_STANDARD 14)
Run Code Online (Sandbox Code Playgroud)

作为Qt的5.7的,使用任何方法,除了用于CMAKE_CXX_STANDARD将导致C++ 14级的错误等问题中所提到的一个.使用此方法清除了构建的所有错误.

有趣的是,错误报告是非常有趣的阅读,因为最初这个问题被认为是一个释放阻止,然后降级到一个已知问题,并最终(貌似)甚至从已知问题列表中清除.

  • ***错误报告是非常有趣的阅读***同意,问题说明已关闭.这很奇怪,关闭固定,但不解决问题只是文件存在. (2认同)