OBJC_STANDARD

在版本 3.16 中添加。

构建此目标所请求的 OBJC 标准。

此属性指定构建此目标所请求的 OBJC 标准。对于某些编译器,这会导致在编译命令行中添加类似 -std=gnu11 的标志。

支持的值包括

90

Objective C89/C90

99

Objective C99

11

Objective C11

17

在版本 3.21 中添加。

Objective C17

23

在版本 3.21 中添加。

Objective C23

如果请求的值没有为正在使用的编译器添加编译标志,则会改为添加之前的标准标志。这意味着使用

set_property(TARGET tgt PROPERTY OBJC_STANDARD 11)

在使用不支持 -std=gnu11 或等效标志的编译器时,不会导致错误或警告,而是会添加 -std=gnu99-std=gnu90 标志(如果支持)。这种“衰减”行为可以通过 OBJC_STANDARD_REQUIRED 目标属性来控制。此外,OBJC_EXTENSIONS 目标属性可用于控制是否在每个目标的基础上启用编译器特定的扩展。

如果未设置此属性,并且项目已设置 C_STANDARD,则 C_STANDARD 的值将设置为 OBJC_STANDARD

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

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