Quando provo ad eseguire un makefile generato da CMake per compilare il mio programma, ottengo l'errore
l'intervallo basato su loop non è supportato in modalità C ++ 98.
Ho provato ad aggiungere add_definitions(-std=c++0x)
al mio CMakeLists.txt
, ma non ha aiutato.
Ho provato anche questo:
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=gnu++0x)
endif()
Quando lo faccio g++ --version
, ottengo:
g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1
Ho anche provato SET(CMAKE_CXX_FLAGS "-std=c++0x")
, che non funziona.
Non capisco come posso attivare le funzionalità di C ++ 11 usando CMake.
set(CMAKE_CXX_STANDARD 11)
(prima di definire l'obiettivo) è il modo migliore.
CXX_STANDARD
non non lavoro su MSVC, quindi sostanzialmente bisogna ricadere target_compile_features
se si desidera qualcosa che funziona cross-platform.
SET(CMAKE_CXX_FLAGS "-std=c++0x")
bene funziona per me, quindi non c'è probabilmente un problema da qualche altra parte nel file CMakeLists. Assicurati di non sovrascrivere accidentalmente il contenuto di CMAKE_CXX_FLAGS in seguito.