OBJCXX_STANDARD¶
3.16 版新增。
用于构建此目标的 ObjC++ 标准的特性要求。
此属性指定用于构建此目标的 ObjC++ 标准的特性要求。对于某些编译器,这会导致在编译行中添加一个类似 -std=gnu++11
的标志。
支持的值包括
98
Objective C++98
11
Objective C++11
14
Objective C++14
17
Objective C++17
20
Objective C++20
23
在 3.20 版本中添加。
Objective C++23
26
在 3.25 版本中新增。
Objective C++26. CMake 3.25 及更高版本识别
26
为一个有效值,但目前没有任何编译器支持它。
如果请求的值未导致为使用的编译器添加编译标志,则会改为添加先前的标准标志。这意味着使用
set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)
如果编译器不支持 -std=gnu++11
或等效标志,则不会导致错误或警告,而是会添加 -std=gnu++98
标志(如果支持)。这种“降级”行为可以通过 OBJCXX_STANDARD_REQUIRED
目标属性来控制。此外,OBJCXX_EXTENSIONS
目标属性可用于按目标控制是否启用特定于编译器的扩展。
如果未设置该属性,并且项目已设置了 CXX_STANDARD
,则 OBJCXX_STANDARD
将设置为 CXX_STANDARD
的值。
有关编译特性和支持的编译器列表,请参见 cmake-compile-features(7)
手册。
当创建目标时,如果设置了 CMAKE_OBJCXX_STANDARD
变量,则此属性会由该变量的值进行初始化。