CMP0162

版本 3.30 新增。

Visual Studio 產生器 預設新增 UseDebugLibraries 指示器。

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

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

  • 如果目標為已知的 MSVC 執行階段程式庫(例如由 MSVC_RUNTIME_LIBRARY 指定的程式庫)編譯來源,則針對為 "Debug" 執行階段程式庫編譯的組態,UseDebugLibrariestrue,而對於其他組態則為 false

  • 否則,例如在由 add_custom_target() 建立的目標中,對於 Debug 組態,UseDebugLibrariestrue,而對於其他組態則為 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 中移除。