CMP0165¶
3.30 版本新增。
enable_language() 必须在 project() 之前调用。
在 CMake 3.29 及更早版本中,如果项目在第一次调用 enable_language() 之前调用了 project(),语言将被启用,但可能会使用预期未设置的详细信息。在 CMake 3.30 及更高版本中,enable_language() 倾向于拒绝这种情况,如果检测到尚未调用 project(),则会停止并报致命错误。此策略为在 enable_language() 在 project() 之前调用时恰好能正常工作,并且尚未更新以按必需顺序调用这些命令的项目提供了兼容性。
此策略的 OLD 行为是允许在 enable_language() 调用 project() 之前进行调用。此策略的 NEW 行为是在这种情况下以致命错误失败。
此策略引入于 CMake 版本 3.30。它可以由 cmake_policy() 或 cmake_minimum_required() 设置。如果未设置,CMake 会发出警告并使用 OLD 行为。
注意
策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。