VERIFY_INTERFACE_HEADER_SETS¶
在 3.24 版本加入.
用于验证目标的 PUBLIC 和 INTERFACE 标头集中的所有标头是否可以单独包含。
当此属性设置为 true 时,目标是对象库、静态库、共享库、接口库或启用导出的可执行文件,并且目标具有一个或多个“PUBLIC”或“INTERFACE”标头集,一个名为“<target_name>_verify_interface_header_sets”的对象库目标被创建。此验证目标在 PUBLIC 和 INTERFACE 标头集中的每个标头都有一个源文件。每个源文件仅包含其关联的头文件。验证目标链接到原始目标以获得其所有使用要求。验证目标的 EXCLUDE_FROM_ALL 和 DISABLE_PRECOMPILE_HEADERS 属性设置为 true,并且其 AUTOMOC、 AUTORCC、 AUTOUIC 和 :prop_tgt: UNITY_BUILD 属性设置为 false。
如果设置了标头的 LANGUAGE 属性,则该属性的值用于确定编译头文件所使用的语言。否则,如果目标有任何 C++ 源,则标头将编译为 C++。否则,如果目标有任何 C 源,则头文件将编译为 C。否则,如果全局启用 C++,则头文件将编译为 C++。否则,如果全局启用 C,则将头文件编译为 C。否则,不编译头文件。
如果创建了任何验证目标,则会创建一个名为“all_verify_interface_header_sets”的顶级目标,它依赖于所有验证目标。
如果在创建目标时设置了此属性,则该属性由 CMAKE_VERIFY_INTERFACE_HEADER_SETS 变量的值初始化。
如果项目希望控制此属性验证哪些标头集,则可以设置 INTERFACE_HEADER_SETS_TO_VERIFY。