CMP0165

3.30 版本新增。

enable_language() 必须在 project() 之后调用。

在 CMake 3.29 及更早版本中,如果项目在第一次调用 project() 之前调用了 enable_language(),则该语言将被启用,但可能使用了未设置的详细信息。在 CMake 3.30 及更高版本中,enable_language() 更倾向于拒绝这种情况,并以致命错误停止,如果它检测到 project() 尚未被调用。此策略为在 project() 之前调用 enable_language() 时恰好可以工作的项目以及尚未更新到按必需顺序调用这些命令的项目提供了兼容性。

此策略的 OLD 行为是允许在 project() 之前调用 enable_language()。此策略的 NEW 行为是在这种情况下以致命错误失败。

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

注意

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