MSVC_RUNTIME_LIBRARY

於 3.15 版本新增。

選擇以 MSVC ABI 為目標的編譯器所使用的 MSVC 執行時期程式庫。

允許的值如下:

MultiThreaded

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

MultiThreadedDLL

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

MultiThreadedDebug

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

MultiThreadedDebugDLL

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

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

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

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

add_executable(foo foo.c)
set_property(TARGET foo PROPERTY
  MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

會根據組態,為目標 foo 選擇具有或不具有偵錯資訊的多執行緒靜態連結執行時期程式庫。

此屬性從 CMAKE_MSVC_RUNTIME_LIBRARY 變數的值初始化(如果已設定)。 如果未設定此屬性,則 CMake 會使用預設值 MultiThreaded$<$<CONFIG:Debug>:Debug>DLL 來選擇 MSVC 執行時期程式庫。

注意

僅當在第一個 project()enable_language() 命令(該命令使用以 MSVC ABI 為目標的編譯器啟用語言)之前,將原則 CMP0091 設定為 NEW 時,此屬性才會生效。