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
和 UNITY_BUILD
屬性設定為 false。
如果標頭的 LANGUAGE
屬性已設定,則該屬性的值將用於確定編譯標頭檔的語言。否則,如果目標有任何 C++ 來源,則標頭將編譯為 C++。否則,如果目標有任何 C 來源,則標頭將編譯為 C。否則,如果全域啟用 C++,則標頭將編譯為 C++。否則,如果全域啟用 C,則標頭將編譯為 C。否則,標頭檔將不會被編譯。
如果標頭的 SKIP_LINTING
屬性設定為 true,則該檔案將不會被編譯。
如果建立任何驗證目標,則會建立一個名為 all_verify_interface_header_sets
的頂層目標,該目標依賴於所有驗證目標。
如果變數 CMAKE_VERIFY_INTERFACE_HEADER_SETS
在建立目標時已設定,則此屬性會由該變數的值初始化。
如果專案希望控制此屬性驗證哪些標頭集合,則可以設定 INTERFACE_HEADER_SETS_TO_VERIFY
。