我有一个 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 版,但在测试构建期间出现多次失败并出现错误
no member 'make_unique' in namespace std
我已验证所有适当的 header 和编译选项都已到位,并排除了任何环境问题。使用 Qt 5.7 绝对是个问题。有什么解决方法吗?
最佳答案
原来这是一个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 中清除了.
关于c++ - 从 Qt 5.6 切换到 Qt 5.7 - 命名空间 std 中的 "no member ' make_unique',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38443695/