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
,则 OBJC_STANDARD
将设置为 C_STANDARD
的值。
有关编译特性以及支持的编译器列表的信息,请参阅 cmake-compile-features(7)
手册。
当创建目标时,如果设置了 CMAKE_OBJC_STANDARD
变量,此属性将由该变量的值进行初始化。