CMP0176

添加至 3.31 版中。

execute_process() ENCODING 默认为 UTF-8

ENCODING 仅在 Windows 上有意义。它指定在 stdout 和 stderr 上进程输出时期望的字符编码。在 CMake 3.14 及更早版本中,默认编码为 NONE,它对应于 CMake 的内部 UTF-8 编码。在 CMake 3.15 至 CMake 3.30 中,默认编码意外更改为 AUTO,但该更改没有被注意到,也没有在文档中记录。

CMake 3.31 及更高版本更希望 ENCODING 默认为 UTF-8。此策略与可能依赖该默认值为 AUTO 的项目保持兼容性。

此策略的 OLD 行为是针对 execute_process() 在未指定 ENCODING 时使用 AUTO。此策略的 NEW 行为是使用 UTF-8 作为默认 ENCODING

此策略在 CMake 3.31 版本中引入。它可通过 cmake_policy()cmake_minimum_required() 设置。如果没有设置,CMake 不会 发出警告,并且使用 OLD 行为。

注意

OLD 行为根据策略 已被 定义 弃用,并且在未来版本的 CMake 中可能会被移除。