CMAKE_MSVC_RUNTIME_LIBRARY

在版本 3.15 中新增。

選擇 MSVC 執行時期程式庫,供以 MSVC ABI 為目標的編譯器使用。此變數用於初始化所有目標在建立時的 MSVC_RUNTIME_LIBRARY 屬性。它也會透過呼叫 try_compile() 命令傳播到測試專案中。

允許的值為

MultiThreaded

使用 -MT 或等效旗標編譯,以使用多執行緒靜態連結的執行時期程式庫。

MultiThreadedDLL

使用 -MD 或等效旗標編譯,以使用多執行緒動態連結的執行時期程式庫。

MultiThreadedDebug

使用 -MTd 或等效旗標編譯,以使用多執行緒靜態連結的執行時期程式庫。

MultiThreadedDebugDLL

使用 -MDd 或等效旗標編譯,以使用多執行緒動態連結的執行時期程式庫。

對於不以 MSVC ABI 為目標的編譯器,此值會被忽略,但當使用以 MSVC ABI 為目標的編譯器時,不支援的值將被拒絕並顯示錯誤。

此值也可能是空字串 (""),在這種情況下,CMake 將不會明確新增執行時期程式庫選擇旗標。請注意,對於 Visual Studio Generators,原生建置系統可能會選擇新增其自身的預設執行時期程式庫選擇旗標。

使用 generator expressions 以支援每個組態的規格。例如,以下程式碼

set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

為所有後續目標選擇多執行緒靜態連結的執行時期程式庫,是否包含偵錯資訊取決於組態。

如果未設定此變數,則 MSVC_RUNTIME_LIBRARY 目標屬性將不會自動設定。如果未設定該屬性,則 CMake 會使用預設值 MultiThreaded$<$<CONFIG:Debug>:Debug>DLL 來選擇 MSVC 執行時期程式庫。

注意

此變數僅在政策 CMP0091 在第一個啟用使用以 MSVC ABI 為目標的編譯器的語言的 project()enable_language() 命令之前設定為 NEW 時才生效。