CMP0162

於 3.30 版本新增。

Visual Studio 產生器預設會加入 UseDebugLibraries 指示器。

Visual Studio 專案中的「使用偵錯程式庫」設定,指示哪些組態被視為偵錯組態。在獨立專案中,這可能會影響 MSBuild 預設選擇的 MSVC 執行階段程式庫、最佳化標誌、執行階段檢查和類似設定。CMake 通常會根據專案的規範明確產生所有這些設定,因此 CMake 3.29 及更早版本不會將任何 UseDebugLibraries 指示器寫入 .vcxproj 檔案。

CMake 3.30 及更新版本傾向於寫入 UseDebugLibraries 指示器,因為它們對於人類和工具的參考都很有用,並且也可能影響特定平台的 SDK 行為。目標的每個組態的指示器決定方式如下:

  • 如果目標編譯已知 MSVC 執行階段程式庫的原始碼(例如由 MSVC_RUNTIME_LIBRARY 指定的),則針對編譯為「偵錯」執行階段程式庫的組態,UseDebugLibrariestrue,而其他組態則為 false

  • 否則,例如在由 add_custom_target() 建立的目標中,UseDebugLibraries 對於 Debug 組態為 true,而其他組態則為 false

此政策為尚未更新以預期指示器的專案提供相容性。政策設定由每個目標在其建立時記錄,並用於決定該目標的 .vcxproj 檔案的預設行為。

此政策的 OLD 行為是不預設產生 UseDebugLibraries 指示器。此政策的 NEW 行為是預設產生 UseDebugLibraries 指示器。

如果設定了 CMAKE_VS_USE_DEBUG_LIBRARIES 變數和/或 VS_USE_DEBUG_LIBRARIES 目標屬性,則無論此政策為何,它都會明確控制 UseDebugLibraries 的產生。

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

注意

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