MSVC_RUNTIME_LIBRARY

在版本 3.15 加入。

選擇針對 MSVC ABI 的編譯器所使用的 MSVC 執行時期程式庫。

允許的值為

MultiThreaded

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

MultiThreadedDLL

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

MultiThreadedDebug

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

MultiThreadedDebugDLL

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

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

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

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

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 執行時期程式庫。

注意

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