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" 執行階段程式庫編譯的組態,UseDebugLibraries
為true
,而對於其他組態則為false
。否則,例如在由
add_custom_target()
建立的目標中,對於Debug
組態,UseDebugLibraries
為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 中移除。