Как включить 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
свойство для всех целей.
стандарт 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
переменная, если она установлена при создании цели.