CMP0149¶
於版本 3.27 新增。
Visual Studio 產生器預設選擇最新的 Windows SDK。
Visual Studio 產生器選擇一個 Windows SDK 版本,放入 .vcxproj
檔案中的 WindowsTargetPlatformVersion
設定。 CMake 將 CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
變數設定為選定的 SDK 版本。
在 CMake 3.27 之前,SDK 版本總是透過 CMAKE_SYSTEM_VERSION
變數的值來選擇。使用者或工具鏈檔案可以將該變數設定為主機系統上可用的確切 Windows SDK 版本之一。由於 CMAKE_SYSTEM_VERSION
預設為 CMAKE_HOST_SYSTEM_VERSION
,且不保證有可用的相符 Windows SDK 版本,因此如果沒有可用的確切相符版本,CMake 必須回退使用最新的 Windows SDK 版本。這種方法是有問題的
是否選擇最新的 Windows SDK 可能取決於主機的 Windows 版本是否剛好與可用的 SDK 版本相符。
可能會選取未針對較新的語言標準(例如 C11)更新的舊 Windows SDK 版本。
CMake 3.27 及更高版本傾向於忽略 CMAKE_SYSTEM_VERSION
的確切值,並預設選擇可用的最新 SDK 版本。可以使用 CMAKE_GENERATOR_PLATFORM
變數中的 version=
欄位明確指定確切的 SDK 版本。請參閱Visual Studio 平台選擇。
此政策為尚未從使用 CMAKE_SYSTEM_VERSION
指定確切 SDK 版本移植的專案、工具鏈檔案和建置腳本提供相容性。
注意
此政策必須在專案頂部的第一個 project()
或 enable_language()
命令調用之前設定。也就是說,當 Visual Studio 產生器 選擇 Windows SDK 時。
此政策的 OLD
行為是盡可能使用 CMAKE_SYSTEM_VERSION
的確切值。此政策的 NEW
行為是忽略它。
此政策是在 CMake 版本 3.27 中引入的。可以使用 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 不會發出警告,並使用 OLD
行為。
注意
政策的 OLD
行為是根據定義已棄用
,並可能在未來版本的 CMake 中移除。