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