cmake config_error ai_generated true

CMake Error: Version range constraint 3.20...3.25 is not satisfied by installed CMake version 3.18.4.

ID: cmake/version-range-constraint-unsatisfied

Also available as: JSON · Markdown · 中文
90%Fix Rate
85%Confidence
1Evidence
2024-02-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
cmake_minimum_required(VERSION 3.20...3.25) active
CMake 3.18.4 active
CMake 3.20.0 active

Root Cause

The project's CMakeLists.txt specifies a version range (e.g., cmake_minimum_required(VERSION 3.20...3.25)) which requires CMake >=3.20 and <4.0, but the installed CMake is older than the lower bound.

generic

中文

项目的 CMakeLists.txt 指定了一个版本范围(例如 cmake_minimum_required(VERSION 3.20...3.25)),要求 CMake >=3.20 且 <4.0,但已安装的 CMake 版本低于下限。

Official Documentation

https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html

Workarounds

  1. 90% success Download and install CMake 3.20 or newer from https://cmake.org/download/. For Linux: wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz && tar -xzf cmake-3.20.0-linux-x86_64.tar.gz && sudo mv cmake-3.20.0-linux-x86_64 /opt/cmake-3.20 && sudo ln -sf /opt/cmake-3.20/bin/cmake /usr/local/bin/cmake
    Download and install CMake 3.20 or newer from https://cmake.org/download/. For Linux: wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz && tar -xzf cmake-3.20.0-linux-x86_64.tar.gz && sudo mv cmake-3.20.0-linux-x86_64 /opt/cmake-3.20 && sudo ln -sf /opt/cmake-3.20/bin/cmake /usr/local/bin/cmake
  2. 85% success Use pip to install a newer CMake: pip install cmake==3.20.0 and ensure it's first in PATH.
    Use pip to install a newer CMake: pip install cmake==3.20.0 and ensure it's first in PATH.
  3. 75% success Modify CMakeLists.txt to use a single version lower bound: cmake_minimum_required(VERSION 3.18). Only do this if you verify the project doesn't use features from 3.20+.
    Modify CMakeLists.txt to use a single version lower bound: cmake_minimum_required(VERSION 3.18). Only do this if you verify the project doesn't use features from 3.20+.

中文步骤

  1. 从 https://cmake.org/download/ 下载并安装 CMake 3.20 或更高版本。对于 Linux:wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz && tar -xzf cmake-3.20.0-linux-x86_64.tar.gz && sudo mv cmake-3.20.0-linux-x86_64 /opt/cmake-3.20 && sudo ln -sf /opt/cmake-3.20/bin/cmake /usr/local/bin/cmake
  2. 使用 pip 安装更新的 CMake:pip install cmake==3.20.0 并确保其在 PATH 中优先。
  3. 修改 CMakeLists.txt 使用单一版本下限:cmake_minimum_required(VERSION 3.18)。仅在确认项目不使用 3.20+ 特性时执行此操作。

Dead Ends

Common approaches that don't work:

  1. Set CMAKE_MINIMUM_REQUIRED to a lower version like 3.18 70% fail

    This bypasses the version check but may break build if project uses features from 3.20+.

  2. Reinstall CMake from distro package manager (e.g., apt install cmake) 60% fail

    Distro repositories often have outdated versions; apt may install 3.18 even if you ask for newer.

  3. Use --version flag to check and then manually symlink to a newer version 90% fail

    Symlinks don't resolve version constraints; cmake_minimum_required reads the actual binary version.