INTERFACE_SYSTEM_INCLUDE_DIRECTORIES¶
库的公共系统包含目录列表。
目标(Targets)可以填充此属性,以发布包含系统头文件的目录;因此,这些目录不应产生编译器警告。此外,无论指定的顺序如何,系统包含目录总是在普通包含目录之后被搜索。
当 target_include_directories() 命令被赋予 SYSTEM 关键字时,它会使用 PUBLIC 和 INTERFACE 关键字之后提供的值来填充此属性。
项目也可以直接获取和设置此属性,但必须注意,向此属性添加目录并不会使这些目录在编译过程中被使用。将目录添加到此属性只是将这些目录标记为系统目录,否则它们将以非系统方式使用。这看起来可能类似于重复操作,因此请优先使用带有 SYSTEM 关键字的高级 target_include_directories() 命令,并避免直接设置此属性。
当使用 target_link_libraries() 指定目标依赖项时,CMake 会从所有目标依赖项中读取此属性,以将相同的包含目录标记为包含系统头文件。
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES 的内容可以使用语法为 $<...> 的“生成器表达式”。有关可用表达式,请参阅 cmake-generator-expressions(7) 手册。有关定义构建系统属性的更多信息,请参阅 cmake-buildsystem(7) 手册。