C_STANDARD¶
在 3.1 版本中添加。
构建此目标所需的 C 标准特性。
此属性指定构建此目标所需的 C 标准特性。 对于某些编译器,这会导致向编译行添加诸如 -std=gnu11
之类的标志。 对于没有 C 标准级别概念的编译器,例如 VS 16.7 之前的 Microsoft Visual C++,此属性无效。
支持的值包括
90
C89/C90
99
C99
11
C11
17
在 3.21 版本中添加。
C17
23
在 3.21 版本中添加。
C23
如果请求的值没有导致为正在使用的编译器添加编译标志,则将改为添加先前的标准标志。 这意味着使用
set_property(TARGET tgt PROPERTY C_STANDARD 11)
对于不支持 -std=gnu11
或等效标志的编译器,不会导致错误或警告,而是会添加 -std=gnu99
或 -std=gnu90
标志(如果支持)。 可以使用 C_STANDARD_REQUIRED
目标属性来控制此“衰减”行为。 此外,可以使用 C_EXTENSIONS
目标属性来控制是否在每个目标的基础上启用编译器特定的扩展。
请参阅 cmake-compile-features(7)
手册,以获取有关编译功能和受支持编译器的列表的信息。
如果创建目标时设置了 CMAKE_C_STANDARD
变量,则此属性由该变量的值初始化。