OBJCXX_STANDARD¶
在 3.16 版本中添加。
请求用于构建此目标的 ObjC++ 标准。
此属性指定请求用于构建此目标的 ObjC++ 标准。对于某些编译器,这会导致在编译行中添加一个标志,例如 -std=gnu++11
。
支持的值为
98
Objective C++98
11
Objective C++11
14
Objective C++14
17
Objective C++17
20
Objective C++20
23
在 3.20 版本中添加。
Objective C++23
26
在 3.25 版本中添加。
Objective C++26。CMake 3.25 及更高版本识别
26
作为有效值,但没有任何版本支持任何编译器。
如果请求的值不会导致为所使用的编译器添加编译标志,则会改为添加以前的标准标志。这意味着使用
set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)
对于不支持 -std=gnu++11
或等效标志的编译器,不会导致错误或警告,而是会添加 -std=gnu++98
标志(如果支持)。可以使用 OBJCXX_STANDARD_REQUIRED
目标属性控制此“降级”行为。此外,可以使用 OBJCXX_EXTENSIONS
目标属性控制是否在每个目标的基础上启用编译器特定的扩展。
如果未设置此属性,并且项目已设置 CXX_STANDARD
,则 CXX_STANDARD
的值将设置为 OBJCXX_STANDARD
。
有关编译功能和支持的编译器列表的信息,请参阅 cmake-compile-features(7)
手册。
如果在创建目标时设置了 CMAKE_OBJCXX_STANDARD
变量,则此属性将由该变量的值初始化。