2016-07-18 99 views
5

我有一個CMake Qt項目,它使用了幾個C++ 14功能,其中包括std::make_unique。一般來說,這無論是處理:從Qt 5.6切換到Qt 5.7 - 「no member'make_unique'namespace std」

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

ADD_COMPILE_OPTIONS(-std=c++14) 

我想這個項目從5.6版本升級到5.7,但在測試生成過程中出現了與錯誤

多次失敗

std下沒有成員 'make_unique'

我已經驗證了所有適當的標題和編譯選項,並排除了任何環境問題。這肯定是使用Qt 5.7的一個問題。有什麼解決方法嗎?

回答

9

所以原來這是一個known problem with CMake/Qt 5.7。顯然,因爲CMake的3.1,以限定在CMake的要使用的C++標準的適當的方法是使用

SET(CMAKE_CXX_STANDARD 14) 

作爲Qt的5.7的,使用任何方法除了CMAKE_CXX_STANDARD將導致象C++ 14級的錯誤在問題中提到的那個。使用這種方法清除了我的構建的所有錯誤。

有趣的是,該錯誤報告非常有趣,因爲最初這個問題被認爲是釋放阻止程序,然後降級爲已知問題,最終(似乎)甚至從known issue list中清除。

+2

***錯誤報告是非常有趣的閱讀***同意,該問題說,關閉爲固定。這是奇怪的關閉固定,但不解決問題只是文件,它存在。 – drescherjm