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 中移除。