Ketika saya mencoba menjalankan makefile CMake yang dihasilkan untuk mengkompilasi program saya, saya mendapatkan kesalahan itu
rentang berbasis loop tidak didukung dalam mode C ++ 98.
Saya mencoba menambahkan add_definitions(-std=c++0x)
ke saya CMakeLists.txt
, tetapi tidak membantu.
Saya mencoba ini juga:
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=gnu++0x)
endif()
Ketika saya melakukannya g++ --version
, saya mendapatkan:
g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1
Saya juga sudah mencoba SET(CMAKE_CXX_FLAGS "-std=c++0x")
, yang juga tidak berhasil.
Saya tidak mengerti bagaimana saya bisa mengaktifkan fitur C ++ 11 menggunakan CMake.
set(CMAKE_CXX_STANDARD 11)
(sebelum mendefinisikan target) adalah cara terbaik.
CXX_STANDARD
itu tidak bekerja pada MSVC, jadi pada dasarnya Anda harus kembali ke target_compile_features
jika Anda menginginkan sesuatu yang bekerja lintas-platform.
SET(CMAKE_CXX_FLAGS "-std=c++0x")
bekerja dengan baik bagi saya, jadi mungkin ada masalah di tempat lain dalam file CMakeLists. Pastikan Anda tidak sengaja menimpa konten CMAKE_CXX_FLAGS nanti.