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,则 CXX_STANDARD 的值将设置为 OBJCXX_STANDARD

有关编译功能和支持的编译器列表的信息,请参阅 cmake-compile-features(7) 手册。

如果在创建目标时设置了 CMAKE_OBJCXX_STANDARD 变量,则此属性由该变量的值初始化。