CMP0136

在 3.24 版本中新增。

Watcom 執行時期函式庫旗標由抽象化機制選取。

以 Watcom ABI 為目標的編譯器具有選擇 Watcom 執行時期函式庫的旗標。

在 CMake 3.23 及更早版本中,Watcom 執行時期函式庫選擇旗標會由 CMake 自動加入到預設的 CMAKE_<LANG>_FLAGS_<CONFIG> 快取條目中。這允許使用者編輯他們的快取條目以調整旗標。然而,對於想要以程式方式選擇不同執行時期函式庫的專案而言,這些預設旗標的存在是有問題的。特別是,它需要對 CMAKE_<LANG>_FLAGS_<CONFIG> 變數進行字串編輯,並了解 CMake 內建的預設值,以便可以替換它們。

CMake 3.24 及更高版本偏好將 Watcom 執行時期函式庫選擇旗標排除在預設的 CMAKE_<LANG>_FLAGS_<CONFIG> 值之外,而是提供一個第一級抽象化機制。可以設定 CMAKE_WATCOM_RUNTIME_LIBRARY 變數和 WATCOM_RUNTIME_LIBRARY 目標屬性以選擇 Watcom 執行時期函式庫。如果它們未設定,則 CMake 在 Windows 上使用預設值 MultiThreadedDLL,而在其他平台上使用 SingleThreaded,這與原始旗標等效。

此策略提供與尚未更新以了解抽象化機制的專案的相容性。此策略設定會在第一個啟用其編譯器以 Watcom ABI 為目標的語言的 project()enable_language() 命令生效。

注意

一旦策略在專案頂部生效,該選擇就必須在整個樹狀結構中使用。在子目錄中有巢狀專案的專案中,請務必將所有內容一起轉換。

此策略的 OLD 行為是將 Watcom 執行時期函式庫旗標放置在預設的 CMAKE_<LANG>_FLAGS_<CONFIG> 快取條目中,並忽略 CMAKE_WATCOM_RUNTIME_LIBRARY 抽象化機制。此策略的 NEW 行為是將 Watcom 執行時期函式庫旗標放置在預設快取條目中,而是使用抽象化機制。

此策略是在 CMake 版本 3.24 中引入的。可以使用 cmake_policy()cmake_minimum_required() 來設定。如果未設定,則 CMake 不會發出警告,並使用 OLD 行為。

注意

策略的 OLD 行為根據定義是 已棄用,並可能在未來版本的 CMake 中移除。