Khi tôi cố chạy một tệp Makefile được tạo CMake để biên dịch chương trình của mình, tôi gặp lỗi
phạm vi dựa trên các vòng lặp không được hỗ trợ trong chế độ C ++ 98.
Tôi đã cố gắng thêm add_definitions(-std=c++0x)
vàoCMakeLists.txt
, nhưng không được.
Tôi cũng đã thử điều này:
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=gnu++0x)
endif()
Khi tôi làm g++ --version
, tôi nhận được:
g ++ (Ubuntu / Linaro 4.6.1-9ubfox3) 4.6.1
Tôi cũng đã thử SET(CMAKE_CXX_FLAGS "-std=c++0x")
, mà cũng không hoạt động.
Tôi không hiểu làm thế nào tôi có thể kích hoạt các tính năng của C ++ 11 bằng CMake.
set(CMAKE_CXX_STANDARD 11)
(trước khi xác định mục tiêu) là cách tốt nhất.
CXX_STANDARD
nó không hoạt động trên MSVC, vì vậy về cơ bản, bạn phải quay lại target_compile_features
nếu bạn muốn một cái gì đó hoạt động đa nền tảng.
SET(CMAKE_CXX_FLAGS "-std=c++0x")
việc này rất tốt đối với tôi, vì vậy có lẽ có vấn đề ở đâu đó trong tệp CMakeLists. Hãy chắc chắn rằng bạn không vô tình ghi đè lên nội dung của CMAKE_CXX_FLAGS sau này.