CXX_STANDARD¶
版本 3.1 中新增。
用于构建此目标的 C++ 标准。
此属性指定用于构建此目标的 C++ 标准。对于某些编译器,这会导致在编译行中添加诸如 -std=gnu++11 之类的标志。对于没有标准级别概念的编译器,例如 2015 Update 3 之前的 Microsoft Visual C++,则此属性无效。
支持的值包括
98C++98
11C++11
14C++14
17版本 3.8 新增。
C++17
203.12 版本新增。
C++20
23在 3.20 版本中添加。
C++23
26在 3.25 版本中新增。
如果请求的值未导致为使用的编译器添加编译标志,则会改为添加先前的标准标志。这意味着使用
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 变量,则此属性将由该变量的值初始化。