CMP0203¶
版本 4.2 中添加。
对于以 MSVC ABI 为目标的共享库,将定义 _WINDLL。
在 CMake 4.1 及更早版本中,Visual Studio Generators 会因 Visual Studio 本身的行为而在编译共享库的源文件时定义 _WINDLL。预处理器定义不受 CMake 模型控制,因此其他生成器(如 Ninja)不会添加此定义。
CMake 4.2 及更高版本,当以 MSVC ABI 为目标时,所有生成器都倾向于在编译共享库的源文件时定义 _WINDLL。此策略提供了与未更新为知晓此定义的项目的兼容性。其设置由每个目标在创建时记录,并影响该目标中源文件的编译。
此策略的 OLD 行为不会在 CMake 本身中对 _WINDLL 预处理器定义进行建模。此策略的 NEW 行为会在以 MSVC ABI 为目标时,将 _WINDLL 预处理器定义添加到共享库中的源文件。
此策略是在 CMake 版本 4.2 中引入的。它可以通过 cmake_policy() 或 cmake_minimum_required() 进行设置。如果未设置,CMake **不会** 警告,并使用 OLD 行为。
注意
策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。