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 变量的值,则该值对此属性进行初始化。