Как включить C ++ 11 в CLion?

Я пытаюсь запустить код 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?

10

Решение

Я пытался установить CMAKE_C_FLAGS

Согласно документация CMAKE_C_FLAGS установить флаги языка C для всех типы сборки. Для C ++ вам нужно использовать CMAKE_CXX_FLAGS вместо:

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
18

Другие решения

Для CMake 3.1 или новее вы можете установить CMAKE_CXX_STANDARD переменная в 11:

Значение по умолчанию для CXX_STANDARD свойство целей.

Эта переменная используется для инициализации 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 переменная, если она установлена ​​при создании цели.

9

По вопросам рекламы [email protected]