CMP0163

新增於版本 3.30。

GENERATED 原始碼檔案屬性現在在所有目錄中都可見。

在 CMake 3.29 及更早版本中,GENERATED 原始碼檔案屬性,如同其他原始碼檔案屬性一樣,在每個目錄中都是獨立的作用域。雖然原則 CMP0118 允許在一個目錄中標記為 GENERATED 的原始碼在其他目錄中使用,而無需再次手動將它們標記為 GENERATED,但 GENERATED 屬性對於 get_property()get_source_file_property() 的呼叫仍然不可見。

一個原始碼檔案是否為產生的,是該原始碼的全局屬性,只有是或否兩種狀態。CMake 3.30 及以上版本傾向於將 GENERATED 原始碼檔案屬性視為全局作用域。一旦在一個目錄中設定,它會立即對其他目錄中的 get_property()get_source_file_property() 的呼叫可見。此原則為尚未更新以適應此行為的專案提供相容性。

此原則的 OLD 行為是讓 GENERATED 原始碼檔案屬性僅在設定它的目錄中可見。此原則的 NEW 行為是允許 GENERATED 原始碼檔案屬性一旦在任何目錄中設定,在所有目錄中都可見。此外,此原則的 NEW 行為暗示原則 CMP0118NEW 行為:GENERATED 屬性只能設定為布林值,且一旦開啟就不能關閉。

此原則在 CMake 版本 3.30 中引入。它可以使用 cmake_policy()cmake_minimum_required() 設定。如果未設定,CMake 將警告,並使用 OLD 行為。

注意

原則的 OLD 行為是依定義已棄用,並可能在未來版本的 CMake 中移除。