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
指定的),則針對編譯為「偵錯」執行階段程式庫的組態,UseDebugLibraries
為true
,而其他組態則為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 版本中移除。