CMAKE_MSVC_RUNTIME_LIBRARY

於 3.15 版本新增。

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

允許的值為:

MultiThreaded

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

MultiThreadedDLL

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

MultiThreadedDebug

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

MultiThreadedDebugDLL

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

此值在不針對 MSVC ABI 的編譯器上會被忽略,但是當使用針對 MSVC ABI 的編譯器時,不支援的值將會被拒絕並產生錯誤。

此值也可以是空字串(""),在這種情況下,CMake 不會明確添加任何執行階段函式庫選擇旗標。請注意,使用 Visual Studio 產生器時,原生建置系統可能會選擇添加其自身的預設執行階段函式庫選擇旗標。

使用 產生器 表達式 來支援每個組態的規範。例如,以下程式碼:

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

根據組態選擇是否包含除錯資訊,為後續所有目標選擇使用多執行緒靜態連結的執行階段函式庫。

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

注意

只有當政策 CMP0091 在第一個 project()enable_language() 命令啟用使用針對 MSVC ABI 的編譯器的語言之前設定為 NEW 時,此變數才會生效。