Kiedy próbuję uruchomić plik makefile wygenerowany przez CMake w celu skompilowania mojego programu, pojawia się błąd
zakres oparty na pętlach nie jest obsługiwany w trybie C ++ 98.
Próbowałem dodać add_definitions(-std=c++0x)
do mojego CMakeLists.txt
, ale to nie pomogło.
Próbowałem też:
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=gnu++0x)
endif()
Kiedy to robię g++ --version
, otrzymuję:
g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1
Próbowałem też SET(CMAKE_CXX_FLAGS "-std=c++0x")
, co też nie działa.
Nie rozumiem, jak mogę aktywować funkcje C ++ 11 za pomocą CMake.
set(CMAKE_CXX_STANDARD 11)
(przed zdefiniowaniem celu) jest najlepszym sposobem.
CXX_STANDARD
to nie działa na MSVC, więc w zasadzie musisz cofnąć się, target_compile_features
jeśli chcesz czegoś, co działa na wielu platformach.
SET(CMAKE_CXX_FLAGS "-std=c++0x")
Działa dobrze dla mnie, więc nie ma chyba problem gdzie indziej w pliku CMakeLists. Upewnij się, że później nie przypadkowo zastąpisz zawartość CMAKE_CXX_FLAGS.