How to enable C++11 in CLion?
Solution 1
I tried to set CMAKE_C_FLAGS
According to the documentation the CMAKE_C_FLAGS
set C language flags for all build types. For C++ you need use CMAKE_CXX_FLAGS
instead:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Solution 2
For CMake 3.1 or later, you can set the CMAKE_CXX_STANDARD
variable to 11
:
Default value for
CXX_STANDARD
property of targets.This variable is used to initialize the
CXX_STANDARD
property on all targets.
The C++ standard whose features are requested to build this target.
This property specifies the C++ standard whose features are requested to build this target. For some compilers, this results in adding a flag such as
-std=gnu++11
to the compile line.Supported values are 98, 11 and 14.
If the value requested does not result in a compile flag being added for the compiler in use, a previous standard flag will be added instead. This means that using:
set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
with a compiler which does not support
-std=gnu++11
or an equivalent flag will not result in an error or warning, but will instead add the-std=gnu++98
flag if supported. This “decay” behavior may be controlled with theCXX_STANDARD_REQUIRED
target property.See the cmake-compile-features(7) manual for information on compile features.
This property is initialized by the value of the
CMAKE_CXX_STANDARD
variable if it is set when a target is created.
Pavel
Hi, my name is Pavel. I'm a software engineer and I love programming. Being a part of its community, I'm willing to contribute. I think StackExchange is a great place to share the knowledge everyone has, and I hope what I have shared is helpful for you too.
Updated on July 09, 2022Comments
-
Pavel almost 2 years
I'm trying to run C++11 code in CLion but it doesn't work. It says:
... /projects/CLion/untitled/main.cpp:7:1: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11 ...
I tried to set
CMAKE_C_FLAGS
to-std=c++11
or-std=gnu++11
but I still have the same problem. Regular C++ code compiles fine.What flag do I have to set in CLion's CMake window to compile my C++11 code?
-
hlin117 over 9 yearsWhere are the variables
CMAKE_CXX_FLAGS
set? I'm not too familiar with CMake. -
Gluttton over 9 years@hlin117, 'CMAKE_CXX_FLAGS' is situated in file 'CMakeLists'.
-
hlin117 over 9 yearsI noticed how unclear my question was after I posted it, sorry. I meant to ask, in the line
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
, the secondCMAKE_CXX_FLAGS
has to be initialized before it's referenced (using$
), but where is it initialized? (I can't imagine that the variable is both initialized and referenced on the same line.) -
Gluttton over 9 years@hlin117, short answer is you shouldn't worry about previous initialisation or declaration such variables. If variable is existed it will be used, if not then empty string will be substituted. In generally this form of declaration allow change value of existing variable instead of rewriting.
-
becko almost 9 yearsTo enable C++14 I tried
-std=c++14
, but it doesn't work. Any ideas? -
Gluttton almost 9 years@becko, What compiler do you use and what version?
-
Gluttton almost 9 years@becko, It's looks like 4.8.4 not support C++14 (I can't prove this assumption), but you can try use experimental implementation by adding
-std=c++y
instead. -
Ela782 over 8 yearsWhat if I want
-std=c++11
and not-std=gnu++11
, how doesCXX_STANDARD 11
differentiate between the two? -
U007D almost 8 yearsTry -std=c++1y (not just y) for compilers with early C++14 support.