VERIFY_INTERFACE_HEADER_SETS

在 3.24 版本中新增。

用於驗證目標的 PUBLICINTERFACE 頭檔集合中的所有頭檔是否可以獨立包含。

當此屬性設定為 true,且目標為物件函式庫、靜態函式庫、共享函式庫、介面函式庫或啟用匯出的可執行檔,且目標具有一個或多個 PUBLICINTERFACE 頭檔集合時,會建立一個名為 <target_name>_verify_interface_header_sets 的物件函式庫目標。此驗證目標在 PUBLICINTERFACE 頭檔集合中每個頭檔都有一個原始碼檔案。每個原始碼檔案僅包含其相關的頭檔。驗證目標會連結原始目標以取得其所有使用需求。驗證目標的 EXCLUDE_FROM_ALLDISABLE_PRECOMPILE_HEADERS 屬性設定為 true,而其 AUTOMOCAUTORCCAUTOUICUNITY_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