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
。