OBJC_STANDARD¶
3.16 版新增。
用于构建此目标的 OBJC 标准。
此属性指定用于构建此目标的 OBJC 标准。对于某些编译器,这会导致在编译行中添加诸如 -std=gnu11 之类的标志。
支持的值包括
90Objective C89/C90
99Objective C99
11Objective C11
173.21 版本新增。
Objective C17
233.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 变量,则此属性将由该变量的值初始化。