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 行為下,保留對某些 FetchContent
用例的支援,同時保留呼叫具有相同專案名稱的 project()
的巢狀目錄的行為。有關詳細資訊,請參閱 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 中移除。