Как включить 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 to -std=c++11 или -std=gnu++11 но у меня все та же проблема. Обычный код C++ компилируется нормально.

какой флаг я должен установить в окне CMake CLion для компиляции моего кода C++11?

2 ответов


Я попытался установить 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 переменная to 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-compile-features (7) руководство для получения информации о функциях компиляции.

это свойство инициализируется значением CMAKE_CXX_STANDARD переменная, если она установлена при создании цели.