CXX_STANDARD¶
在版本 3.1 中添加。
要求的 C++ 标准特性用于构建此目标。
此属性指定要求的 C++ 标准特性用于构建此目标。对于一些编译器,这会导致添加一个标志,如 -std=gnu++11
到编译行。对于没有标准级别概念的编译器,例如 2015 年更新 3 之前的 Microsoft Visual C++,则没有效果。
支持的值是
98
C++98
11
C++11
14
C++14
17
在版本 3.8 中添加。
C++17
20
在版本 3.12 中添加。
C++20
23
在版本 3.20 中添加。
C++23
26
在版本 3.25 中添加。
C++26。CMake 3.25 及更高版本识别
26
作为一个有效值,没有版本支持任何编译器。
如果请求的值导致不会为所用编译器添加编译标志,则会添加前一个标准标志。这意味着使用
set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
与不支持 -std=gnu++11
或同等标志的编译器一起不会导致错误或警告,但如果受支持,则会添加 -std=gnu++98
标志。这种“衰减”行为可以用 CXX_STANDARD_REQUIRED
目标属性来控制。此外,CXX_EXTENSIONS
目标属性可用于控制目标是否启用特定于编译器的扩展。
有关编译特性和受支持编译器列表的信息,请参见 cmake-compile-features(7)
手册。
如果在创建目标时设置了此属性,则此属性将由 CMAKE_CXX_STANDARD
变量的值初始化。