CMP0165

添加于 3.30 版本。

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

在 CMake 3.29 及更低版本中,如果在首次调用 project() 之前调用 enable_language(),语言将被启用,但可能使用预期会被设置但实际上未设置的细节。在 CMake 3.30 及更高版本中,如果检测到 project() 尚未被调用,enable_language() 倾向于拒绝这种情况,并停止并出现致命错误。此策略为那些在 project() 之前调用 enable_language() 且尚未更新以按要求的顺序调用这些命令的项目提供兼容性。

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

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

注意

策略的 OLD 行为根据定义是 deprecated by definition,并可能在未来的 CMake 版本中移除。