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 行为是如果未指定 ENCODING,则 execute_process() 默认使用 AUTO。此策略的 NEW 行为是使用 UTF-8 作为默认的 ENCODING

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

注意

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