Quando tento executar um makefile gerado pelo CMake para compilar meu programa, recebo o erro que
o intervalo baseado em loops não é suportado no modo C ++ 98.
Tentei adicionar add_definitions(-std=c++0x)
ao meu CMakeLists.txt
, mas não ajudou.
Eu tentei isso também:
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=gnu++0x)
endif()
Quando eu faço g++ --version
, recebo:
g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1
Eu também tentei SET(CMAKE_CXX_FLAGS "-std=c++0x")
, o que também não funciona.
Não entendo como posso ativar os recursos do C ++ 11 usando o CMake.
set(CMAKE_CXX_STANDARD 11)
(antes de definir o alvo) é o melhor caminho.
CXX_STANDARD
faz não trabalho em MSVC, então basicamente você tem que cair de volta para target_compile_features
se você quer algo que funciona em várias plataformas.
SET(CMAKE_CXX_FLAGS "-std=c++0x")
fino trabalha para mim, então provavelmente há um problema em algum outro lugar no arquivo CMakeLists. Certifique-se de não substituir acidentalmente o conteúdo de CMAKE_CXX_FLAGS posteriormente.