2016-07-18 113 views
5

Possiedo un progetto CMake Qt che utilizza diverse funzioni di C++ 14, tra cui std::make_unique. In genere questo sarebbe stato gestito mediante:passaggio da Qt 5.6 a Qt 5.7 - "nessun membro 'make_unique' nello spazio dei nomi std"

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

o

ADD_COMPILE_OPTIONS(-std=c++14) 

vorrei aggiornare il progetto dalla versione 5.6 alla 5.7, ma nel corso di un test build c'erano più errori con l'errore

nessun membro 'make_unique' nel namespace std

Ho verificato che tutte le intestazioni e le opzioni di compilazione appropriate siano presenti e ho escluso qualsiasi problema ambientale. È sicuramente un problema con l'uso di Qt 5.7. C'è qualche soluzione?

risposta

9

Quindi si tratta di uno known problem with CMake/Qt 5.7. Apparentemente, poiché CMake 3.1, il modo corretto per definire quale standard C++ da utilizzare in CMake è con

SET(CMAKE_CXX_STANDARD 14) 

Al Qt 5.7, utilizzando qualsiasi metodo eccezione per CMAKE_CXX_STANDARD comporterà C++ 14 errori come quello menzionato nella domanda. L'utilizzo di questo metodo ha chiarito tutti gli errori per la mia build.

Aneddoticamente, il bug report è una lettura piuttosto interessante, poiché in origine questo problema era considerato un release blocker, quindi declassato a un problema noto e alla fine (apparentemente) addirittura eliminato dallo known issue list.

+2

*** il bug report è una lettura piuttosto interessante *** D'accordo, il problema dice chiuso come fisso. È strano chiudere come fisso ma per non risolvere il problema basta documentare che esiste. – drescherjm