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 的未來版本中移除。