cmake
config_error
ai_generated
true
CMake 错误:CMakeLists.txt 中的 CMake 错误:未知的 CMake 命令 "cmake_policy"。
CMake Error: CMake Error in CMakeLists.txt: Unknown CMake command "cmake_policy".
ID: cmake/missing-cmake-policies-package
87%修复率
82%置信度
1证据数
2024-01-10首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| CMake 2.8 | active | — | — | — |
| CMake 3.5 | active | — | — | — |
| CMake 3.20 | active | — | — | — |
根因分析
cmake_policy 命令使用不正确(例如拼写错误、大小写错误或在 cmake_minimum_required 之前调用),或者 CMake 版本太旧不支持它。
English
The cmake_policy command is used incorrectly (e.g., misspelled, wrong case, or called before cmake_minimum_required) or CMake version is too old to support it.
官方文档
https://cmake.org/cmake/help/latest/command/cmake_policy.html解决方案
-
确保 cmake_minimum_required(VERSION 3.0) 放在任何 cmake_policy 调用之前。示例:cmake_minimum_required(VERSION 3.0) 然后 cmake_policy(SET CMP0000 NEW)。
-
检查拼写错误:使用 cmake_policy(小写,下划线),而不是 cmakepolicy 或 CMakePolicy。正确语法:cmake_policy(VERSION 3.0)。
-
如果使用旧版 CMake,升级到至少 3.0,或使用条件代码:if(CMAKE_VERSION VERSION_GREATER 2.6) cmake_policy(...) endif()。
无效尝试
常见但无效的做法:
-
90% 失败
cmake_policy was introduced in CMake 2.6; if cmake_minimum_required is set to a lower version, the command may be unrecognized.
-
100% 失败
cmake_policy is a built-in command, not a variable; using set() with it creates a variable that does nothing.