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