CMP0180

在版本 3.31 中新增。

project() 總是將 <PROJECT-NAME>_* 設定為一般變數。

在 CMake 3.29 及更早版本中,project() 命令將 <PROJECT-NAME>_SOURCE_DIR<PROJECT-NAME>_BINARY_DIR<PROJECT-NAME>_IS_TOP_LEVEL 設定為快取條目,而不是一般變數。CMake 3.30 開始將它們設定為一般變數,但僅當它們已設定為一般變數時才設定。這是為了在政策 CMP0169 的 NEW 行為下,同時保留呼叫具有相同專案名稱的 project() 的巢狀目錄的行為,而需要保留對某些 FetchContent 用例的支援。有關詳細資訊,請參閱 3.30.3、3.30.4 和 3.30.5 的發行說明。

CMake 3.31 及更高版本傾向於始終將 <PROJECT-NAME>_SOURCE_DIR<PROJECT-NAME>_BINARY_DIR<PROJECT-NAME>_IS_TOP_LEVEL 設定為快取條目和一般變數,無論快取或一般變數是否已存在。此政策為尚未更新以預期此行為的專案提供相容性。

此政策的 OLD 行為僅在呼叫 project() 時,如果已有該名稱的一般變數,才會為 <PROJECT-NAME>_SOURCE_DIR<PROJECT-NAME>_BINARY_DIR<PROJECT-NAME>_IS_TOP_LEVEL 設定一般變數。此政策的 NEW 行為將始終在呼叫 project() 時,為 <PROJECT-NAME>_SOURCE_DIR<PROJECT-NAME>_BINARY_DIR<PROJECT-NAME>_IS_TOP_LEVEL 設定一般變數。

此政策在 CMake 版本 3.31 中引入。它可以由 cmake_policy()cmake_minimum_required() 設定。如果未設定,CMake 不會發出警告,並使用 OLD 行為。

注意

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