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_STANDARDfaz não trabalho em MSVC, então basicamente você tem que cair de volta para target_compile_featuresse 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.