Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何启用C++;克莱恩11号?_C++_C++11_Cmake_Clion - Fatal编程技术网

C++ 如何启用C++;克莱恩11号?

C++ 如何启用C++;克莱恩11号?,c++,c++11,cmake,clion,C++,C++11,Cmake,Clion,我试图在CLion中运行C++11代码,但它不起作用。它说: ... /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++代码编译精细.< /p> 我必须在CLion的CMake窗口中设置什么标

我试图在CLion中运行C++11代码,但它不起作用。它说:

...
    /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++代码编译精细.< /p> 我必须在CLion的CMake窗口中设置什么标志来编译我的C++11代码

我试图设置CMAKE_C_标志

根据
CMAKE_C_标志
为所有设置C语言标志。对于C++,您需要使用<代码> CMACHYCXXFLAG < /COD> >:< /P>
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

对于CMake 3.1或更高版本,您可以转到
11

目标的
CXX\u标准
属性的默认值

此变量用于初始化所有目标上的
CXX\u标准
属性

:

C++的标准,其特征要求构建该目标。

此属性指定C++特性,其特性要求构建该目标。对于某些编译器,这会导致在编译行中添加一个标志,例如

-std=gnu++11

支持的值为98、11和14

如果请求的值未导致为正在使用的编译器添加编译标志,则将添加以前的标准标志。这意味着使用:

set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
如果编译器不支持
-std=gnu++11
或等效标志,则不会导致错误或警告,而是会添加
-std=gnu++98
标志(如果支持)。此“衰减”行为可以通过目标属性进行控制

有关编译功能的信息,请参阅手册

如果在创建目标时设置了
CMAKE\u CXX\u STANDARD
变量,则此属性由该变量的值初始化


变量
CMAKE\u CXX\u标志设置在哪里?我对CMake不太熟悉。@hlin117,“CMake_CXX_FLAGS”位于文件“CmakeList”中。我在发布后注意到我的问题有多不清楚,对不起。我想问的是,在
集合(CMAKE_CXX_FLAGS“${CMAKE_CXX_FLAGS}-std=c++11”)
行中,第二个
CMAKE_CXX_FLAGS
必须在被引用之前进行初始化(使用
$
),但它在哪里初始化?(我无法想象这个变量是在同一行上初始化和引用的。)@hlin117,简单的回答是,您不必担心以前初始化或声明这些变量。若变量存在,将使用它,若不存在,则将替换空字符串。通常这种形式的声明允许更改现有变量的值,而不是重写。为了启用C++14,我尝试了
-std=C++14
,但它不起作用。有什么想法吗?如果我想要
-std=c++11
而不是
-std=gnu++11
,那么
CXX\U标准11
如何区分两者?