Я пытаюсь запустить код C ++ 11 в CLion, но он не работает. Это говорит:
...
/projects/CLion/untitled/main.cpp:7:1: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
...
Я пытался установить CMAKE_C_FLAGS
в -std=c++11
или же -std=gnu++11
но у меня все та же проблема. Обычный код C ++ компилируется нормально.
Какой флаг мне нужно установить в окне CMake CLion, чтобы скомпилировать мой код C ++ 11?
Я пытался установить CMAKE_C_FLAGS
Согласно документация CMAKE_C_FLAGS
установить флаги языка C для всех типы сборки. Для C ++ вам нужно использовать CMAKE_CXX_FLAGS
вместо:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Для CMake 3.1 или новее вы можете установить CMAKE_CXX_STANDARD
переменная в 11
:
Значение по умолчанию для
CXX_STANDARD
свойство целей.Эта переменная используется для инициализации
CXX_STANDARD
собственность на все цели.
Стандарт C ++, функции которого запрашиваются для создания этой цели.
Это свойство определяет стандарт C ++, функции которого запрашиваются для создания этой цели. Для некоторых компиляторов это приводит к добавлению флага, такого как
-std=gnu++11
к строке компиляции.Поддерживаемые значения: 98, 11 и 14.
Если запрошенное значение не приводит к добавлению флага компиляции для используемого компилятора, вместо него будет добавлен предыдущий стандартный флаг. Это означает, что с помощью:
set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
с компилятором, который не поддерживает
-std=gnu++11
или эквивалентный флаг не приведет к ошибке или предупреждению, но вместо этого добавит-std=gnu++98
флаг, если поддерживается. Это поведение «распада» можно контролировать с помощьюCXX_STANDARD_REQUIRED
целевое свойство.Увидеть CMake-компиляции функции (7) руководство для получения информации о функциях компиляции.
Это свойство инициализируется значением
CMAKE_CXX_STANDARD
переменная, если она установлена при создании цели.